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

Vic*_*tor 1 php laravel eloquent laravel-5

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

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

dd($company->activities);
Run Code Online (Sandbox Code Playgroud)

此代码在控制器方法中.

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

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

luk*_*ter 5

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

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

$company->activities()->save($activity);
$company->load('activities');
dd($company->activities);
Run Code Online (Sandbox Code Playgroud)