Laravel中如何关联Tasks表筛选create_task_id≠2的所有Leads数据
解决方案:获取符合条件的Leads数据
基于你的Laravel环境和已定义的关联关系,以下是几种满足需求的查询写法,可根据实际业务场景选择:
场景1:Leads存在关联Tasks,且所有关联Tasks的create_task_id都不等于2
如果需要确保该Lead的所有关联Tasks都符合create_task_id != 2的条件:
$leads = Lead::whereHas('tasks', function ($query) { $query->where('create_task_id', '!=', 2); }, '>=', 1) ->whereDoesntHave('tasks', function ($query) { $query->where('create_task_id', 2); }) ->get();
场景2:Leads至少有一个关联Tasks的create_task_id不等于2
只要Lead存在至少一个符合条件的Task即可,不限制其他Task的create_task_id值:
$leads = Lead::whereHas('tasks', function ($query) { $query->where('create_task_id', '!=', 2); })->get();
场景3:包含无任何关联Tasks的Leads(若业务需要)
如果需要把没有关联Tasks的Lead也纳入结果:
$leads = Lead::whereHas('tasks', function ($query) { $query->where('create_task_id', '!=', 2); })->orWhereDoesntHave('tasks') ->get();
说明
whereHas:筛选存在指定关联且关联模型满足条件的主模型;whereDoesntHave:筛选不存在满足指定条件的关联模型的主模型;- 可根据实际需求调整查询逻辑,比如是否需要包含无关联的Lead、是否要求所有关联Task都符合条件等。
内容的提问来源于stack exchange,提问作者Anurag Ck
相关产品推荐
相关产品推荐

