Yii2 : Active Record 添加 Not In 条件
Posted
技术标签:
【中文标题】Yii2 : Active Record 添加 Not In 条件【英文标题】:Yii2 : Active Record add Not In condition 【发布时间】:2014-11-15 03:08:03 【问题描述】:将IN条件添加到活动查询的活动记录方式是什么 在 yii 1.x 中你可以像这样使用 CDbCriteria
$cr = new CDbCriteria();
$cr->addNotInCondition('attribute', $array);
yii2活动记录实现中似乎没有等效的API调用,如何通过活动记录做到这一点?
【问题讨论】:
这个link 可能对某人有帮助。 【参考方案1】:对我来说,唯一可行的解决方案是:
$query = MyModel::find()->where('`your-attribute` NOT IN(' . implode(',', $array) . ')')->all();
【讨论】:
【参考方案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();
【讨论】:
【参考方案3】:所有查询操作数现在似乎都合并在yii\db\QueryInterface::Where()
中,每个文档
现在可以使用类似
$query = MyModel::find()->where(['attribute'=>$array]);
对于一个不处于状态的它的格式略有不同
$query = MyModel::find()->where(['not in','attribute',$array]);
【讨论】:
这会失败,我们需要: $query = MyModel::find()->where(['attribute'=>$array])->all(); 那将是一个条件,问题是关于不在此处参考详情:yiiframework.com/doc-2.0/yii-db-query.html#where()-detail 查询中的$array
是什么?【参考方案4】:
$query = MyModel::findAll(['not in ','attribute',$array]);
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html
【讨论】:
'not in' 中的空白是多余的以上是关于Yii2 : Active Record 添加 Not In 条件的主要内容,如果未能解决你的问题,请参考以下文章
Yii2 : Active Record add Not In condition
如何在 Active Record 迁移中为字段添加索引以加快查询速度?