Yii2: Активная запись добавить Не в состоянии
Каков активный способ записи добавления условия IN в активный запрос
в yii 1.x вы можете использовать CDbCriteria, как это
$cr = new CDbCriteria();
$cr->addNotInCondition('attribute', $array);
Кажется, нет эквивалентного вызова API в реализации активной записи yii2, как это сделать с помощью активной записи?
Ответы
Ответ 1
Хорошо, что все запросы-операнды теперь объединены внутри yii\db\QueryInterface::Where()
для каждой документации
теперь можно добавить условие In, используя что-то вроде
$query = MyModel::find()->where(['attribute'=>$array]);
для не в условии это немного отличается формат
$query = MyModel::find()->where(['not in','attribute',$array]);
Ответ 2
$query = MyModel::findAll(['not in ','attribute',$array]);
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html
Ответ 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();