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

Laravel 7 查询构造器orWhere混合嵌套and条件的实现问题

Laravel 查询构造器OR分组AND条件实现方案

你可以直接使用Laravel查询构造器的闭包分组条件功能实现需求,orWhere方法传入闭包时,闭包内的所有条件会自动被括号包裹,且闭包内默认使用AND拼接条件,正好匹配你需要的「or (A and B)」逻辑。

修改后的完整代码如下:

return $builder->whereHas('tags', function(Builder $query) use($tagId, $yourCustomParam) {
    $query->where('tags.name', 'verification')
        ->orWhere('tags.name', 'pending')
        // 分组OR条件,内部为AND逻辑
        ->orWhere(function ($query) use ($yourCustomParam) {
            $query->whereNotNull('assigned_to')
                // 下方替换为你自己的自定义条件即可
                ->where('your_custom_column', $yourCustomParam)
                ->where('other_column', 'expected_value');
        });
});

最终生成的SQL WHERE段逻辑和你要求的完全一致:

WHERE 
    tags.name = 'verification' 
    OR tags.name = 'pending' 
    OR (
        assigned_to IS NOT NULL 
        AND your_custom_column = ? 
        AND other_column = 'expected_value'
    )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:03