yii 1.xでアクティブなクエリにIN条件を追加するアクティブなレコードの方法は何ですか。このようなCDbCriteriaを使用できます
$cr = new CDbCriteria();
$cr->addNotInCondition('attribute', $array);
Yii2アクティブレコードの実装には同等のAPI呼び出しはないようですが、アクティブレコードを介してこれを行う方法は?
さて、ドキュメントごとにyii\db\QueryInterface::Where()
内ですべてのクエリオペランドがマージされるようになりました。
$query = MyModel::find()->where(['attribute'=>$array]);
not In条件の場合、形式がわずかに異なります
$query = MyModel::find()->where(['not in','attribute',$array]);
$query = MyModel::findAll(['not in ','attribute',$array]);
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html
数字の場合:
$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();
私にとって唯一の有効なソリューションは次のとおりです。
$query = MyModel::find()->where('`your-attribute` NOT IN(' . implode(',', $array) . ')')->all();