将IN条件添加到活动Query的活动Record方式是什么 在yii 1.x中你可以像这样使用CDbCriteria
$cr = new CDbCriteria();
$cr->addNotInCondition('attribute', $array);
在yii2活动记录实现中似乎没有等效的API调用,如何通过活动记录执行此操作?
答案 0 :(得分:75)
所有查询操作数似乎现在在每个文档的yii\db\QueryInterface::Where()
内合并
现在可以使用
$query = MyModel::find()->where(['attribute'=>$array]);
对于非In状态,格式略有不同
$query = MyModel::find()->where(['not in','attribute',$array]);
答案 1 :(得分:5)
$query = MyModel::findAll(['not in ','attribute',$array]);
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html
答案 2 :(得分: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();
答案 3 :(得分:1)
对我来说,唯一可行的解决方案是:
$query = MyModel::find()->where('`your-attribute` NOT IN(' . implode(',', $array) . ')')->all();