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

如何用Doctrine查询语言筛选refused列0与NULL值的行?

解决方法:获取refused为0或NULL的行

这个问题我之前也碰到过~你现在的问题出在把两个条件用AND连起来了,这相当于要找**同时满足refused IS NULL和refused = 0**的行,当然找不到结果啦😉

下面给你两种可行的解决方案:

方案一:用OR组合两个条件

直接把两个条件用OR关联,同时注意用括号包裹(避免和其他WHERE条件产生逻辑冲突):

// 基础写法
$queryBuilder
    // 你的其他WHERE条件...
    ->andWhere('b.refused IS NULL OR b.refused = 0');

如果用Doctrine的表达式语法,可读性会更好(适合复杂查询):

use Doctrine\ORM\Query\Expr;

$queryBuilder
    // 你的其他WHERE条件...
    ->andWhere(
        $queryBuilder->expr()->orX(
            'b.refused IS NULL',
            'b.refused = 0'
        )
    );

方案二:排除refused = 1的行

因为你的refused字段只有0、1、NULL三种可能,所以直接排除值为1的行,剩下的自然就是0和NULL的行:

$queryBuilder
    // 你的其他WHERE条件...
    ->andWhere('b.refused != 1');

补充说明:SQL中NULL != 1的结果是NULL,不会被!=过滤掉,所以这个写法刚好能保留所有refused为0或NULL的行,非常简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:55:17