it-roy-ru.com

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

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

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

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

35
Manquer

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

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

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

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

http://www.yiiframework.com/doc-2.0/guide-db-active-record.html

5
Oleg Ozimok

Для номеров:

$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();
3
E.Prokhorov

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

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