1

次のようなさまざまなパラメータで結合を使用してクエリを作成する必要があります。

SELECT foo.*, bar.* FROM foo LEFT JOIN bar ON foo.c1 = bar.c1 AND foo.c2 = bar.c2 WHERE foo c3 = "somedata";

問題は、FuelPHPクエリビルダーを使用して「AND」を作成する方法が見つからないことです。

ありがとう。

4

3 に答える 3

2

複数の ->on を 1 つの結合で使用することができます。この場合、ビルダーは「AND」を使用してそれらを結合します。

于 2012-10-29T14:37:32.760 に答える
0

on 条件をコンパイルする方法により、status= 1のような値を設定することができなくなります。

関数 on_string を \Fuel\Core\Database_Query_Builder_Join に追加しました

public function on_string($string) { 
    $this->_on_string = $string;
    return $this;
}

コンパイル()で

       if ($this->_on_string == "") { //yau add on string
        $conditions = array();
        foreach ($this->_on as $condition) {
            // Split the condition
            list($c1, $op, $c2) = $condition;

            if ($op) {
                // Make the operator uppercase and spaced
                $op = ' ' . strtoupper($op);
            }

            // Quote each of the identifiers used for the condition
            $conditions[] = $db->quote_identifier($c1) . $op . ' ' . $db->quote_identifier($c2);
        }

        // Concat the conditions "... AND ..."
        $sql .= '(' . implode(' AND ', $conditions) . ')';
    } else {            
        $sql .= '(' . $this->_on_string . ')'; //yau add on string
    }

メソッドも Database_Query_Builder_Select に公開してください。

    public function on_string($string)
{
    $this->_last_join->on_string($string);

    return $this;
}
于 2013-03-15T12:18:55.077 に答える