为什么拉拉威尔没有立即挽救关系


Why Laravel does not save relationships immediately?

让我们看看这个示例代码:

$activity = new Activity(...);
$company->activities()->save($activity);
dd($company->activities);

此代码在控制器方法中。

如果我运行此代码一次,我将得到[]作为输出。如果我再运行一次,我会得到以前保存的活动。如果我再运行一次,我会得到2个(而不是3个)活动等

所以当调用save方法时,laravel似乎并没有正确地保存关系。我也尝试过使用类似$company->push()的东西,但没有成功。

当您以前加载过activities关系(通过热切加载或仅通过访问它)并且它被缓存在模型中时,就会发生这种情况。

您可以通过预先调用load()来获取更新的集合:

$company->activities()->save($activity);
$company->load('activities');
dd($company->activities);