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

如何在WHERE条件中校验当前登录用户ID?

实现当前登录用户Admin身份校验的方案

针对你的需求,这里提供几种基于ORM和原生SQL的实现思路,核心是同时关联角色模型并校验当前登录用户ID:

1. 基于模型关联的实例判断(以Eloquent为例)

假设你有User和Role两个模型,且User通过role_id关联到Role:

首先在User模型中定义关联:

class User extends Model
{
    public function role()
    {
        return $this->belongsTo(Role::class);
    }
}

然后在User模型内实现isAdmin()方法:

public function isAdmin()
{
    // 直接通过当前用户实例的关联角色判断,自动绑定当前用户ID
    return $this->role->name === 'Admin';
}

调用时只需拿到当前登录用户实例:

$isAdmin = auth()->user()->isAdmin();

2. 通过查询构造器关联校验

如果需要直接通过查询判断存在性(不依赖用户实例):

public function isAdmin()
{
    $currentUserId = auth()->id(); // 获取当前登录用户ID
    return User::whereHas('role', function ($query) {
        $query->where('name', 'Admin'); // 校验角色为Admin
    })
    ->where('id', $currentUserId) // 校验用户ID为当前登录用户
    ->exists(); // 判断是否存在符合条件的记录
}

3. 原生SQL实现

如果直接用原生SQL,逻辑类似:

SELECT EXISTS(
    SELECT 1 FROM users u
    INNER JOIN roles r ON u.role_id = r.id
    WHERE r.name = 'Admin' AND u.id = ? -- 这里?替换为当前登录用户ID
) AS is_admin;

核心逻辑总结:

  • 确保用户模型与角色模型的关联关系正确配置
  • 同时添加两个筛选条件:角色为Admin、用户ID匹配当前登录用户
  • 通过exists()或SQL的EXISTS语法判断是否存在符合条件的记录

内容的提问来源于stack exchange,提问作者perh23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:25:16