yii2 活动记录 whereNot

yii2 AcrtiveRecord whereNot

我有一个以下 sql 查询,我想 "build" 使用 Yii2 的 ORM:

SELECT * FROM table WHERE [some conditions] AND (col1 <> 0 OR col2 <> 0)

所以我想排除 col1 和 col2 等于 0 的所有结果,但我不想使用 sql EXCEPT 命令执行此操作。

SQL 应该是正确的,但我现在的问题是如何使用 yii2 ORM 构建它。

使用此代码:

Model::find()->where(['condition' => 1])
             ->andWhere(['condition2' => 20])
             ->andWhere(['not', ['col1' => 0]])
             ->andWhere(['not', ['col2' => 0]])
             ->all();

您需要在一个数组中使用条件键 'OR'

Model::find()
        ->where(['condition' => 1])
        ->andWhere([
            'OR',
            ['!=', 'col1', 'val1'],
            ['!=', 'col2', 'val2'],
        ])
        ->all();