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

Laravel如何查询job表中指定用户未申请的职位 现有SQL无法运行

问题排查

  • 原有Laravel代码使用内连接join,仅会返回两张表匹配的记录,无法查询到无对应申请记录的职位;同时判断空值使用where('字段', null)写法错误,应使用whereNull方法。
  • 原有原生SQL将user_id过滤条件写在WHERE子句中,左连接后无匹配申请记录的行对应的candidates字段均为NULL,会被该条件直接过滤,相当于左连接被强制转为内连接,无法得到正确结果。

正确实现代码

Laravel查询构造器版本

$joblist = JobDetail::leftJoin('candidates', function ($join) {
    $join->on('job_details.id', '=', 'candidates.job_detail_id')
         ->where('candidates.user_id', Auth::id());
})
->whereNull('candidates.job_detail_id')
->get();

该写法将用户ID的过滤逻辑放在JOIN关联条件中,仅匹配当前登录用户的申请记录,最终筛选出关联结果为空的就是用户未申请的职位。

原生SQL版本

SELECT job_details.* 
FROM job_details 
LEFT JOIN candidates 
ON job_details.id = candidates.job_detail_id 
AND candidates.user_id = 替换为当前登录用户的实际ID
WHERE candidates.job_detail_id IS NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:03