我有新的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 *
?
由于
答案 0 :(得分:-1)
您无需执行其他查询。使用此对象获取其他属性:
auth()->user()-name