Ответ 1
Вы можете легко сказать laravel, чтобы сделать это с помощью одной команды:
$model->load('relation');
Скажет ему обновить коллекцию отношений, а $model->relation
теперь покажет правильные значения.
В laravel, после использования attach() или detach(), чтобы добавить или удалить что-то из отношения, коллекция не изменилась. Поэтому, если у меня есть модель, чья реализация содержит [1, 2]
, после этого:
$model->relation()->detach(1);
$model->relation()->attach(3);
он все равно будет содержать [1, 2]
! Как его обновить?
Вы можете легко сказать laravel, чтобы сделать это с помощью одной команды:
$model->load('relation');
Скажет ему обновить коллекцию отношений, а $model->relation
теперь покажет правильные значения.
Если вы хотите, чтобы все ваши отношения перезагружались по мере необходимости, и вы находитесь внутри своей модели, вы можете использовать:
$this->relations = [];
Можно использовать конструктор запросов Eloquent:
$freshCollection = $user->roles()->get();
Вывод: три решения здесь
$model->load('relation');
unset($model->relation);
$freshCollection = $user->roles()->get();'
просто отключите его и дайте системе перезагрузиться по требованию.
unset($model->relation)