【问题标题】:Yii2 : Active Record add Not In conditionYii2 : Active Record 添加 Not In 条件
【发布时间】:2014-11-15 03:08:03
【问题描述】:

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

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

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

【问题讨论】:

  • 这个link 可能对某人有帮助。

标签: activerecord yii yii2


【解决方案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() 中,每个文档 现在可以使用类似

      的方式添加 In 条件
      $query = MyModel::find()->where(['attribute'=>$array]);
      

      对于一个不处于状态的它的格式略有不同

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

      【讨论】:

      【解决方案4】:
      $query = MyModel::findAll(['not in ','attribute',$array]);
      

      http://www.yiiframework.com/doc-2.0/guide-db-active-record.html

      【讨论】:

      • 'not in' 中的空白是多余的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多