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

如何编写满足多规则的SQL筛选条件(Laravel whereRaw场景)

正确的SQL筛选条件及Laravel实现

核心逻辑表达式

把需求转化为SQL条件,最直观的写法是:

WHERE (type != 1) 
OR (type = 1 AND item != 1) 
OR (type = 1 AND item = 1 AND product = 4)

也可以简化为逻辑等价的简洁版本:

WHERE type != 1 
OR item != 1 
OR (item = 1 AND product = 4)

注:简化版逻辑为:只要type不等于1就全选;如果type等于1,要么item不等于1就全选,要么item等于1且product等于4才选。

Laravel中的实现方式

方式1:使用whereRaw直接写入完整条件

$tables = Table::whereRaw("
    (type != 1) 
    OR (type = 1 AND item != 1) 
    OR (type = 1 AND item = 1 AND product = 4)
")->get();

方式2:使用Laravel查询构建器链式调用(更符合框架风格)

$tables = Table::where('type', '!=', 1)
    ->orWhere(function ($query) {
        $query->where('type', 1)
              ->where('item', '!=', 1);
    })
    ->orWhere(function ($query) {
        $query->where('type', 1)
              ->where('item', 1)
              ->where('product', 4);
    })
    ->get();

效果验证

用你提供的输入表测试上述条件,会精准筛选出期望的输出结果:仅排除type=1、item=1、product=5的行,其余所有行全部保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:57:18