Laravel:急切加载用户导航栏

时间:2018-03-29 13:42:52

标签: laravel eloquent

我的用户与hasMany有关系“animals”。

在导航栏中,将显示第一个动物结果以及他收集的数量。

{{Auth::user()->animals()->first()->name}}
{{Auth::user()->animals()->first()->amount}}

这会产生两个sql查询。

由于这是导航栏,总是将用户加载到$ user变量的安全方法是什么?

如果我使用Auth :: user(),我怎么能加载动物?

全局用户变量是否有意义,或者控制器是否总是将$ user传递给视图更好更安全?

此代码还会生成三个查询:

$user=Auth::user();
$user->load('animals');
echo     $user->animals()->first()->name;
echo     $user->animals()->first()->amount;

我认为first()是罪魁祸首。 访问预先加载的集合的第一个元素的正确和最简单的方法是什么?

0 个答案:

没有答案