从会话中获取用户ID - laravel 5.3 authentication

时间:2017-01-04 18:29:41

标签: laravel authentication laravel-5 laravel-5.3

我有新的Laravel 5.3安装。刚刚使用php artisan make:auth 开始使用内置的auth功能。一切正常,登录后Auth::check()返回true,Auth::user()返回用户的数据,Auth::id()给出登录用户的ID。

困扰我的是,当我只有这一行时

$userId = Auth:id();

在我的控制器操作中(并且在调试器面板的“查询”选项卡中没有与Auth关联的其他代码)我看到以下查询

select * from `users` where `users`.`id` = '34' limit 1

这个额外的查询对我来说是非常不受欢迎的(特别是选择所有部分),因为我需要用户的id来进行查询,从users表中选择特定字段,以及将其与其他表连接。出于性能原因,我不想进行双重查询。

那么,有没有办法告诉Laravel在会话中保存登录用户的id(如果没有保存)并直接从会话中获取登录用户的 id - 没有对数据库进行任何查询。

编辑:据我所知,在第一次Auth::user()调用后,后续调用将不会向数据库发出请求,但这是无意义的,为什么要进行select *查询,如果我只需要数据库中的一些列。至少有没有办法告诉Laravel只选择特定列,而不是select *

由于

1 个答案:

答案 0 :(得分:-1)

您无需执行其他查询。使用此对象获取其他属性:

auth()->user()-name