Laravel Eloquent最佳实践阅读条目,包括关系

时间:2016-05-23 06:54:41

标签: php laravel eloquent

我有一个名为“服务”的模型和另一个名为“许可证”的模型。服务具有许多许可证,许可证属于一个服务。

当我想要返回包括其许可证在内的所有服务时,我目前正在执行以下操作

$services = Auth::user()->services;
foreach($services as $service) {
    $service->licenses;
}

这是有效的,但我喜欢有更清洁的东西,因为我经常使用它,有时甚至是非常深的结构。

1 个答案:

答案 0 :(得分:1)

如果您只是尝试加载所有相关记录,则可以使用预先加载或延迟预先加载来加载,这两者都接受嵌套关系。

在您的示例中,由于您已经加载了用户,因此可以使用load()方法来延迟加载相关记录:

Auth::user()->load('services.licenses');
dd(Auth::user());

常规预先加载的工作方式相同:

$user = User::with('services.licenses')->find(Auth::user()->id);
dd($user);