Yii2:Active Record添加Not In条件

时间:2014-09-20 18:56:06

标签: activerecord yii yii2

将IN条件添加到活动Query的活动Record方式是什么 在yii 1.x中你可以像这样使用CDbCriteria

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

在yii2活动记录实现中似乎没有等效的API调用,如何通过活动记录执行此操作?

4 个答案:

答案 0 :(得分:75)

所有查询操作数似乎现在在每个文档的yii\db\QueryInterface::Where()内合并 现在可以使用

之类的东西添加In条件
$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();