Yii - 通过多列值过滤模型findAll?

时间:2014-09-30 20:27:46

标签: yii

$models = ClientsDatabases::model->findAllByAttributes(array(
  'active' => 1, 
  'suspended' => 0 
 ));

我还想通过多列的特定值来过滤它。例如:

   $filters = array( 
        array( 'master_db' => 2, 'db_id' => 3 ), 
        array( 'master_db' => 2, 'db_id' => 2 ), 
   )

我可以使用哪些方法来过滤这些特定的列值?

1 个答案:

答案 0 :(得分:3)

您是否考虑过使用范围来实现此目标?

控制器: $model = ClientsDatabases::model()->active()->suspended()->findAll();

型号:

public function scopes() {
    return array(
        'active' => array(
            'condition' => 'active = 1'
        ),
        'suspended' => array(
            'condition' => 'suspended = 0'
        ),
    );
}

如果要传递值,而不是像这样定义默认范围,请尝试使用:

型号:

public function active($active = 0) {
    $this->getDbCriteria()->mergeWith(array(
        'condition' => "active = {$active}"
    ));
    return $this;
}

然后你的控制器看起来像这样:$model = ClientDatabases::model()->active(1)->suspended()->findAll();

希望有所帮助。