我几乎在每一页都使用当前通过身份验证的用户Auth::user()
对象。我的users
表has manypolls
。在Laravel 5.2上的Auth :: user()中进行快速加载
现在每次我想接收我的用户的相关民意调查Auth::user()->polls
Laravel将对数据库执行查询。
有没有办法让 - 或注入一个地方 - Auth::user()
对象Eager Loading的相关民意调查和其他相关的东西?
我几乎在每一页都使用当前通过身份验证的用户Auth::user()
对象。我的users
表has manypolls
。在Laravel 5.2上的Auth :: user()中进行快速加载
现在每次我想接收我的用户的相关民意调查Auth::user()->polls
Laravel将对数据库执行查询。
有没有办法让 - 或注入一个地方 - Auth::user()
对象Eager Loading的相关民意调查和其他相关的东西?
Auth::user()
函数每次使用时都返回相同的用户对象。它不会每次都返回数据库以再次获取用户。
因此,您第一次调用Auth :: user() - >民意调查时,它会查询数据库以获得他们的民意调查。然后,在您称之为其他时间的情况下,您将从对象中检索投票(对象将投票数据保存在其模型中)。所以这可能不是一个大问题,因为无论您使用多少次,它只需要一次数据库调用即可获得投票。
要回答你将如何做到这一点的问题:Auth
外观返回类Illuminate\Auth\Guard
的对象。您需要创建一个扩展该类的新类,然后覆盖user()
方法以通过民意调查检索用户。您可以查看该课程以了解更多关于它是如何工作的,泰勒非常善于评论代码并向您展示发生了什么,因此您可以根据需要进行更改。
感谢您的回答!确实,该对象在调用一次之后扩展为'polls'属性。 – nipeco