我几乎在每个页面上都通过Auth::user()
对象使用当前经过身份验证的用户。我的users
表有许多polls
。
现在,每当我想接收我的用户Auth::user()->polls
的相关民意调查时,Laravel都会对数据库进行查询。
是否有方法制作或注入Auth::user()
对象热切加载相关的轮询和其他相关内容?
Auth::user()
函数每次使用时都会返回相同的用户对象。它不会每次都返回数据库以再次获取用户。
因此,当您第一次调用Auth::user()->polls时,它将查询数据库以获取他们的轮询。然后,在调用它的其余时间里,您将从对象中检索民意调查(对象将民意调查数据保存在其模型中)。因此,这可能不是一个大问题,因为无论你使用多少次,它只需要一个数据库调用就可以获得民意调查
为了回答如何做到这一点的问题:Auth
facade返回一个类为Illuminate'Auth'Guard
的对象。您需要创建一个扩展它的新类,然后重写user()
方法来检索带有轮询的用户。你可以查看该类来了解更多关于它是如何工作的,Taylor非常善于评论代码并向你展示正在发生的事情,这样你就可以在需要时进行更改。