如何在laravel中重新加载关系集合?

Ben*_*ird 43 php collections relationship laravel laravel-4

在laravel中,使用attach()或detach()来添加或删除关系中的某些内容后,该集合未更改.因此,如果我的模型的realation包含[1, 2],则在此之后:

$model->relation()->detach(1);
$model->relation()->attach(3);
Run Code Online (Sandbox Code Playgroud)

它仍将包含[1, 2]!我该如何刷新它?

Ben*_*ird 85

您可以使用一个命令轻松告诉laravel:

$model->load('relation');
Run Code Online (Sandbox Code Playgroud)

将告诉它刷新关系集合,$model->relation现在将显示正确的值.

  • 这对于在执行`$ model-> relation()-> save($ relation)`情况后重新加载模型也很方便。 (2认同)
  • 您也可以执行unset($ model-> relation)` (2认同)

Giu*_*oso 9

从 Laravel 7.x 开始,您可以用于$model->refresh()刷新模型及其关系。

这里是文档


Yev*_*yev 6

要么只是unset它,让系统按需重新加载。

unset($model->relation)
Run Code Online (Sandbox Code Playgroud)

或者

$model->unsetRelation('relation');
Run Code Online (Sandbox Code Playgroud)

并根据要求加载。


小智 5

结论:这里有三个解决方案

$model->load('relation');

unset($model->relation);

$freshCollection = $user->roles()->get();`
Run Code Online (Sandbox Code Playgroud)