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

Laravel数据库查询中如何编写两个WHERE条件?

Laravel查询:同时添加name=Python和price IS NULL条件

嘿,这事儿很简单,我给你两种常用的实现方式,顺便解答你关于单个WHERE条件的疑问:

方式一:链式调用多个where方法(最直观)

Laravel的查询构造器支持链式调用,你可以直接在原有查询后面追加whereNull方法(专门用来处理字段为null的情况,会自动生成price IS NULL的正确SQL):

DB::table('contents')
    ->where('name', 'Python')
    ->whereNull('price')
    ->get();

这种方式可读性最高,也是日常开发中最常用的写法。

方式二:单个where方法传递条件数组

如果你想用单个where来包含两个条件,也是可以的,但要注意处理null的正确写法——不能直接写'price' => null(因为SQL里= null是无效的,必须用IS NULL),所以要把条件写成二维数组的形式:

DB::table('contents')->where([
    ['name', '=', 'Python'],
    ['price', 'is', null],
])->get();

这样Laravel会正确解析每个条件,生成WHERE name = 'Python' AND price IS NULL的SQL语句。

注意:别踩这个坑!

如果你尝试这样写:

// 错误写法!不会得到正确结果
DB::table('contents')->where([
    'name' => 'Python',
    'price' => null,
])->get();

这段代码会生成WHERE name = 'Python' AND price = null,而SQL中price = null永远不会匹配任何行(因为null和任何值比较都是unknown),所以这种写法是错误的,一定要避免。

总结一下:两种方式都能实现需求,链式调用更易读,数组方式适合条件较多的场景;单个WHERE条件确实可以同时校验两个条件,但要注意null值的正确写法哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:37:41