4

複数の呼び出しでクエリを作成したいのですが、このコードを使用するとエラーが発生します

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

しかし、私は困難な条件を持っており、upperのようなその使用コードは単純です。

Codeigniterでは、これらの条件を数回使用できます

$this->db->where()
4

2 に答える 2

6

次のような配列を渡す必要があります。

$command->where(array('AND', 'value1 = :value1', 'value2 < :value2'), array(':value1' => 1, ':value2' => 2));
于 2012-07-19T15:26:26.587 に答える
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();
于 2014-06-09T00:39:26.947 に答える