我想使用多个调用构建查询,但是在使用此代码时我有错误
$command = Yii::app()->db->createCommand()
->select('*')
->from('{{table}}');
$command->where('value1 = :value1', array(':value1' => 1));
$command->where('value2 < :value2', array(':value2' => 2));
我明白,我可以使用像
这样的代码$command->where('value1 = :value1 AND value2 = :value2', array(':value1' => 1, ':value2' => 2));
但是我的条件比较困难,而且使用代码比较简单。
在Codeigniter中,我可以多次使用这些条件
$this->db->where()
答案 0 :(得分:6)
你必须传递一个这样的数组:
$command->where(array('AND', 'value1 = :value1', 'value2 < :value2'), array(':value1' => 1, ':value2' => 2));
答案 1 :(得分:0)
实际上我找到了一个更好的方法来做到这一点
$result = array();
$result = Yii::app()->db->createCommand()
->select('*')
->from('table');
$condition = array();
$cond_arg = array();
if (!empty($email)) {
$condition[] = "email =:email";
$cond_arg[':email'] = $email;
}
if (!empty($value2)) {
$condition[] = "value2 =:value2";
$cond_arg[':value2'] = $value2;
}
if (!empty($value3)) {
$condition[] = "value3 like :value3";
$cond_arg[':value3'] = $value3;
}
if (count($condition) > 0) {
$result->where(array('AND', implode(" AND ", $condition)), $cond_arg);
}
return $result->queryAll();