Подтвердить что ты не робот

Yii2: Активная запись добавить Не в состоянии

Каков активный способ записи добавления условия IN в активный запрос в yii 1.x вы можете использовать CDbCriteria, как это

$cr = new CDbCriteria();
$cr->addNotInCondition('attribute', $array);

Кажется, нет эквивалентного вызова API в реализации активной записи yii2, как это сделать с помощью активной записи?

4b9b3361

Ответ 1

Хорошо, что все запросы-операнды теперь объединены внутри yii\db\QueryInterface::Where() для каждой документации теперь можно добавить условие In, используя что-то вроде

$query = MyModel::find()->where(['attribute'=>$array]);

для не в условии это немного отличается формат

$query = MyModel::find()->where(['not in','attribute',$array]);

Ответ 3

Для чисел:

$query = MyModel::find()->where('NOT IN('.implode(',', $array).')');

Для строк

$deleteContracts = Contract::find()
    ->where([
        'session_id' => $session_id,
        'status' => Contract::STATUS_COMPLETED
    ])
    ->andWhere(['not in', 'contract_id', $contracts])
    ->all();

Ответ 4

Для меня единственным рабочим решением было:

$query = MyModel::find()->where('`your-attribute` NOT IN(' . implode(',', $array) . ')')->all();