渴望加载Laravel 5.2中的Auth::user()


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

我几乎在每个页面上都通过Auth::user()对象使用当前经过身份验证的用户。我的users表有许多polls

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

是否有方法制作或注入Auth::user()对象热切加载相关的轮询和其他相关内容?

Auth::user()函数每次使用时都会返回相同的用户对象。它不会每次都返回数据库以再次获取用户。

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

为了回答如何做到这一点的问题:Auth facade返回一个类为Illuminate'Auth'Guard的对象。您需要创建一个扩展它的新类,然后重写user()方法来检索带有轮询的用户。你可以查看该类来了解更多关于它是如何工作的,Taylor非常善于评论代码并向你展示正在发生的事情,这样你就可以在需要时进行更改。