2014-09-20 4 views
31

Что такое активный образ записи добавления IN условия для активного запроса в YII 1.x можно использовать CDbCriteria как этотYii2: Active Record добавить не в состоянии

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

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

+0

это [ссылка] (http://stackoverflow.com/questions/ 31041546/how-to-use-not-equal-to-inside-a-yii2-query/32860991 # 32860991) может помочь кому-то. –

ответ

64

Ну все операнды запроса кажется в настоящее время объединены в в yii\db\QueryInterface::Where() в документации В условиях могут быть добавлены, используя нечто вроде

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

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

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

Это не удастся, нам нужно: $ query = MyModel :: find() -> где (['attribute' => $ array]) -> all(); – Billy

+0

, что было бы в состоянии, вопрос о том, чтобы не упоминать здесь подробности: http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detail – Manquer

2

Для чисел:

$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(); 
0

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

$query = MyModel::find()->where('`your-attribute` NOT IN(' . implode(',', $array) . ')')->all(); 
Смежные вопросы