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

时间:2015-12-21 23:38:22

标签: php laravel eloquent laravel-5.2

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

回答如何执行此操作的问题:Auth facade返回类Illuminate\Auth\Guard的对象。您需要创建一个扩展该类的新类,然后覆盖user()方法以使用轮询检索用户。您可以查看该课程以了解有关其工作原理的更多信息,Taylor非常擅长评论代码并向您展示正在进行的操作,以便您可以根据需要进行更改。