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

Laravel如何检查模型数据是否存在于另一张表并获取符合条件的RequestState

实现方案

步骤1:补全模型关联(未配置的情况下需要先添加)

在对应模型中添加如下关联方法:

  • RequestState 模型添加和 Request 的从属关联
public function request()
{
    return $this->belongsTo(Request::class);
}
  • Request 模型添加和 User 的从属关联
public function user()
{
    return $this->belongsTo(User::class);
}
  • 确认User模型已配置和Graduate的一对一关联
public function graduate()
{
    return $this->hasOne(Graduate::class);
}

步骤2:编写查询代码

使用Laravel关联存在查询方法whereDoesntHave嵌套过滤,直接得到符合要求的结果:

$requestStates = RequestState::where('department_id', auth()->user()->department_id)
    ->whereHas('request', function ($query) {
        // 过滤关联请求对应的用户不在毕业生表的记录
        $query->whereDoesntHave('user.graduate');
    })
    ->get();

如果不想用关联查询,也可以用子查询实现:

// 先获取所有毕业生的用户ID
$graduatedUserIds = Graduate::pluck('user_id');
// 获取对应用户不是毕业生的请求ID
$validRequestIds = Request::whereNotIn('user_id', $graduatedUserIds)->pluck('id');
// 过滤符合部门要求+请求ID有效的RequestState记录
$requestStates = RequestState::where('department_id', auth()->user()->department_id)
    ->whereIn('request_id', $validRequestIds)
    ->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 22:15:05