source

Dectrine DBAL - WHERE IN 배열에 추가 매개변수 포함

manysource 2023. 10. 17. 20:22

Dectrine DBAL - WHERE IN 배열에 추가 매개변수 포함

예제 문서를 사용하여 이와 같은 쿼리를 얻을 수 있었습니다.

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

f.foo를 단일 정수 파라미터로 검색하고 IN문도 찾고 싶지만, 예제 문서 모두 배열을 유일한 파라미터로 하기 때문에 어떻게 작동시킬지 모르겠습니다.

매개변수와 유형은 병렬 배열입니다.f.foo 값에 자리 표시자를 추가하고 올바른 PDO 유형 인수를 추가하기만 하면 됩니다.

$SQL = "SELECT f.foo, b.bar
        FROM Foo f LEFT JOIN Bar b
        WHERE  f.foo = ? AND b.bar IN (?)";

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

자세한 내용은 설명서를 읽으시면 됩니다.

제가 방금 아래의 행동을 접해서 여기에 글을 씁니다, 혹시 다른 사람에게 도움이 될지도 모르겠네요.

IN과 함께 명명된 파라미터를 사용할 때는 주의해야 합니다.유형 배열에 대해서도 이름을 반복해야 합니다.

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

$stmt = $this->db->executeQuery(
        $sql,
        [
            'param_array' => $paramArray
        ],
        [
            'param_array' => Connection::PARAM_STR_ARRAY
        ]
    );

언급URL : https://stackoverflow.com/questions/23549693/doctrine-dbal-where-in-array-with-additional-parameter