为什么 Laravel 不立即保存关系?
Why Laravel does not save relationships immediately?
让我们看一下这个示例代码:
$activity = new Activity(...);
$company->activities()->save($activity);
dd($company->activities);
此代码在控制器方法中。
如果我 运行 此代码一次,我将得到 []
作为输出。如果我再 运行 一次,我就会得到以前的保存 activity。如果我再 运行 一次,我将获得 2(而不是 3)个活动等
所以似乎 laravel 在调用保存方法时没有正确保存关系。我也尝试过使用 $company->push()
之类的东西,但没有成功。
当您之前加载了 activities
关系(通过预先加载或仅通过访问它)并且它缓存在模型中时,就会发生这种情况。
您可以通过预先调用 load()
来获取更新的集合:
$company->activities()->save($activity);
$company->load('activities');
dd($company->activities);
让我们看一下这个示例代码:
$activity = new Activity(...);
$company->activities()->save($activity);
dd($company->activities);
此代码在控制器方法中。
如果我 运行 此代码一次,我将得到 []
作为输出。如果我再 运行 一次,我就会得到以前的保存 activity。如果我再 运行 一次,我将获得 2(而不是 3)个活动等
所以似乎 laravel 在调用保存方法时没有正确保存关系。我也尝试过使用 $company->push()
之类的东西,但没有成功。
当您之前加载了 activities
关系(通过预先加载或仅通过访问它)并且它缓存在模型中时,就会发生这种情况。
您可以通过预先调用 load()
来获取更新的集合:
$company->activities()->save($activity);
$company->load('activities');
dd($company->activities);