让我们看看这个示例代码:
$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);