为什么Laravel不立即保存关系?

时间:2015-04-05 19:45:50

标签: php laravel eloquent laravel-5

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

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

dd($company->activities);

此代码采用控制器方法。

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

所以看起来laravel在调用save方法时没有保存关系。我也尝试过使用像$company->push()这样的东西,但没有成功。

1 个答案:

答案 0 :(得分:5)

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

您可以事先致电load()来获取更新的集合:

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