You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在现有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:44:59