Подтвердить что ты не робот

Как перезагрузить коллекцию отношений в laravel?

В laravel, после использования attach() или detach(), чтобы добавить или удалить что-то из отношения, коллекция не изменилась. Поэтому, если у меня есть модель, чья реализация содержит [1, 2], после этого:

$model->relation()->detach(1);
$model->relation()->attach(3);

он все равно будет содержать [1, 2]! Как его обновить?

4b9b3361

Ответ 1

Вы можете легко сказать laravel, чтобы сделать это с помощью одной команды:

$model->load('relation');

Скажет ему обновить коллекцию отношений, а $model->relation теперь покажет правильные значения.

Ответ 2

Если вы хотите, чтобы все ваши отношения перезагружались по мере необходимости, и вы находитесь внутри своей модели, вы можете использовать:

$this->relations = [];

Ответ 3

Можно использовать конструктор запросов Eloquent:

$freshCollection = $user->roles()->get();

Ответ 4

Вывод: три решения здесь

$model->load('relation');

unset($model->relation);

$freshCollection = $user->roles()->get();'

Ответ 5

просто отключите его и дайте системе перезагрузиться по требованию.

unset($model->relation)