26

サンプル ドキュメントを使用して、このようなクエリを機能させることができました。

SELECT
f.foo,
b.bar
FROM Foo f
LEFT JOIN Bar b
WHERE 
f.foo = 20
AND b.bar IN ?

DBAL を使用すると、このコードは結果を返します。

$result = $this->connection->executeQuery(
            $SQL,
            array($bar_array),
            array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
        )->fetchAll();

IN ステートメントを検索するだけでなく、単一の整数パラメーターとして f.foo を検索したいのですが、すべてのサンプル ドキュメントに唯一のパラメーターとして配列があるため、それを機能させる方法がわかりません。

4

2 に答える 2

20

以下の動作に遭遇したので、ここに書いています。他の人にとって役立つかもしれません。

IN で名前付きパラメーターを使用する場合は注意してください。タイプ配列の名前も繰り返す必要があります。

$sql = "SELECT * FROM myTable WHERE name IN (:param_array)";

$stmt = $this->db->executeQuery(
        $sql,
        [
            'param_array' => $paramArray
        ],
        [
            'param_array' => Connection::PARAM_STR_ARRAY
        ]
    );
于 2016-04-19T07:04:55.263 に答える