在我的控制器中,我这样登录的用户 id 和用户名:
$userId = Auth::user()->id;
$username = Auth::user()->user_name;
但是上面的代码会产生两个查询吗?
我不了解Auth::user()
在幕后的工作方式
答案 0 :(得分:2)
如果您的代码生成2个查询,则将用户保存到另一个变量中。 像这样:
$user = Auth:user();
$userId = $user->id;
$username = $user->user_name;
Laravel不会在会话中存储所有用户,它仅存储用户ID。当调用user()函数时,laravel将从具有保存用户ID的数据库中获取用户。
答案 1 :(得分:2)
Auth :: user()从users表返回包含您的用户数据的对象。
因此,如果只需要一个查询,请使用:
$user = Auth::user();
echo $user->user_name;
在“验证”部分查看官方文档。
在调用Auth方法之前,请确保您的用户已登录:
if (Auth::check()) {
// User logged
}
答案 2 :(得分:0)
如果要减少数据库查询,请按以下方式获取经过身份验证的用户:
$user = Auth::user():
$id = $user->id;
$name = $user->name;
dd($user);
在laravel Auth::user()
中,拥有当前经过身份验证的用户的所有数据。