Laravel 5.2 中的 Auth::user() 急切加载

Eager Loading on Auth::user() in Laravel 5.2

我几乎在每个页面上都通过 Auth::user() 对象使用当前经过身份验证的用户。我的userstablehas manypolls.

现在每次我想接收我的用户的相关民意调查时 Auth::user()->polls Laravel 将对数据库执行查询。

有没有办法制作 - 或注入的地方 - Auth::user() 对象 Eager Loading 相关民意调查和其他相关内容?

Auth::user() 函数 returns 每次使用时都使用相同的用户对象。不会每次都回数据库重新获取用户

所以第一次调用 Auth::user()->polls 时,它会查询数据库以获取他们的民意调查。然后在您调用它的其余时间,您将从对象中检索民意调查(对象将民意调查数据保存在其模型中)。因此,这可能不是什么大问题,因为无论您使用多少次,它都只需要一次数据库调用即可获得民意调查。

要回答您将如何执行此操作的问题:Auth 门面 returns class Illuminate\Auth\Guard 的对象。您需要创建一个新的 class 来扩展它,然后重写 user() 方法以使用投票检索用户。您可以查看 class 以了解有关其工作原理的更多信息,Taylor 非常善于评论代码并向您展示正在发生的事情,以便您可以根据需要进行更改。