【发布时间】:2018-03-29 13:42:52
【问题描述】:
我有一个用户与 hasMany 关系“动物”。
在导航栏中将显示第一个动物结果以及他收集了多少。
{{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() 是罪魁祸首。 访问预先加载的集合的第一个元素的正确和最简单的方法是什么?
【问题讨论】: