如何在现有Laravel查询中传入Auth::user()?
如何在Laravel查询中结合Auth::user()获取当前登录用户的activated_up字段
看起来你是想把查询限定在当前登录的用户身上对吧?原代码的问题在于它会拉取所有符合activated_up为0或1的用户数据,当数据库里有多个用户时,返回的是一堆用户的字段集合,显然不是你想要的目标结果。这里给你两种简洁的解决方案:
方案一:直接从Auth用户实例获取(最推荐)
如果你的需求只是获取当前登录用户的activated_up值,完全不用写复杂的查询构造器——Auth::user()已经返回了当前登录用户的模型实例,直接访问属性就行:
// 确保用户已登录(可以通过路由中间件auth来保障) $activated_up = Auth::user()->activated_up; // 传递到视图 return view('your-view-name', compact('activated_up'));
这种方式最直接高效,而且避免了多余的数据库查询。
方案二:用查询构造器限定当前用户
如果你因为某些原因必须使用查询构造器(比如需要添加额外的过滤条件),可以通过Auth::id()获取当前用户ID,把查询范围缩小到当前用户:
$activated_up = User::where('id', Auth::id()) ->where(function($query) { $query->where('activated_up', '=', '1') ->orWhere('activated_up', '=', '0'); }) // 用value()直接获取单个字段值,代替get()返回的集合 ->value('activated_up'); return view('your-view-name', compact('activated_up'));
这里用value()代替原代码的get(),因为我们只需要当前用户这一个字段的单个值,get()会返回包含单个对象的集合,而value()直接返回字段的原始值,更贴合需求。
额外提醒
别忘了确保用户处于登录状态,否则Auth::user()会返回null导致报错。你可以在路由上添加auth中间件:
Route::get('/your-route', [YourController::class, 'yourMethod'])->middleware('auth');
或者在控制器方法里主动判断:
if (!Auth::check()) { return redirect()->route('login'); }
内容的提问来源于stack exchange,提问作者Parth Pandya
相关产品推荐
相关产品推荐

