yii2 AcrtiveRecord где Not

У меня есть следующий SQL-запрос, который я хочу "построить" с ORM Yii2:

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

Поэтому я хочу исключить все результаты, где col1 и col2 равны 0, но я не хочу делать это с помощью sql EXCEPT команда.

SQL должен быть верным, но мой вопрос сейчас в том, как его построить с помощью ORM yii2.

2 ответа

Решение

Вам нужно использовать условие в одном массиве с ключом "ИЛИ"

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

Используйте этот код:

Model::find()->where(['condition' => 1])
             ->andWhere(['condition2' => 20])
             ->andWhere(['not', ['col1' => 0]])
             ->andWhere(['not', ['col2' => 0]])
             ->all();
Другие вопросы по тегам