Laravel中如何以最少查询高效获取User模型中的认证用户?
Laravel 最优获取认证用户方案(减少查询次数)
你当前的代码触发了两次不必要的数据库查询:
- 第一次调用
Auth::user()时,Laravel已经从数据库取出了完整的认证用户模型实例; - 第二次
User::find($userID)又重复执行了一次查询,完全是冗余操作。
Laravel本身提供了零额外查询的最优方案:直接使用Auth::user()获取认证用户的完整模型实例,代码如下:
$user = Auth::user();
补充说明:
- Laravel的认证系统会在用户登录后,将用户模型实例缓存到当前请求周期的Auth门面中,所以多次调用
Auth::user()也只会触发一次数据库查询; - 如果需要获取用户的最新数据库数据(比如刚修改过用户信息),可以调用
fresh()方法触发单次查询更新实例:$user = Auth::user()->fresh();
内容的提问来源于stack exchange,提问作者nego
相关产品推荐
相关产品推荐

