我几乎在每个页面上通过Auth::user()
对象使用当前经过身份验证的用户。我的users
表has many polls
。
现在,每当我想收到用户Auth::user()->polls
的相关民意调查时,Laravel都会对数据库执行查询。
有没有办法让Auth::user()
对象 Eager Loading 相关的民意调查和其他相关内容?或者注入的地方?
答案 0 :(得分:4)
Auth::user()
函数每次使用时都会返回相同的用户对象。它不会每次都返回到数据库以再次获得用户。
因此,当您第一次调用Auth :: user() - >轮询时,它将查询数据库以获取其民意调查。然后,在您调用它的其余时间,您正在从对象中检索轮询(该对象将轮询数据保留在其模型上)。所以这可能不是一个大问题,因为无论您使用它多少次,它只需要一次数据库调用来获取民意调查。
回答如何执行此操作的问题:Auth
facade返回类Illuminate\Auth\Guard
的对象。您需要创建一个扩展该类的新类,然后覆盖user()
方法以使用轮询检索用户。您可以查看该课程以了解有关其工作原理的更多信息,Taylor非常擅长评论代码并向您展示正在进行的操作,以便您可以根据需要进行更改。