Activerecord Yii2:活动记录添加不在状态

Activerecord Yii2:活动记录添加不在状态,activerecord,yii,yii2,Activerecord,Yii,Yii2,向活动查询中添加条件的活动记录方式是什么 在yii1.x中,您可以像这样使用CDbCriteria $cr = new CDbCriteria(); $cr->addNotInCondition('attribute', $array); 在Yi2活动记录实现中似乎没有等效的API调用,如何通过活动记录实现这一点?所有查询操作数现在似乎都合并到了每个文档中的yii\db\QueryInterface::Where() 现在可以使用以下内容添加In条件 $query = MyModel::

向活动查询中添加条件的活动记录方式是什么 在yii1.x中,您可以像这样使用CDbCriteria

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

在Yi2活动记录实现中似乎没有等效的API调用,如何通过活动记录实现这一点?

所有查询操作数现在似乎都合并到了每个文档中的
yii\db\QueryInterface::Where()
现在可以使用以下内容添加In条件

$query = MyModel::find()->where(['attribute'=>$array]);
对于不在状态,格式略有不同

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

对于数字:

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

这将失败,我们需要:$query=MyModel::find()->where(['attribute'=>$array])->all();这将是一个in条件,问题是关于不在这里。有关详细信息,请参阅此处:查询中的
$array
是什么?不在“中的空格表示意外这可能对某人有所帮助。
$query = MyModel::find()->where('`your-attribute` NOT IN(' . implode(',', $array) . ')')->all();