Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta SQL bruta do Symfony2.3 com cláusula IN


Responda:

Portanto, há pelo menos dois erros que você cometeu. A primeira é o que o @Alarid disse:você não deve implodir seu array. A segunda é que você tem que usar a DoctrineDBALTypes Conversion para IN clause ao executar uma instrução preparada.

E, finalmente, sua consulta é esta:
$stmt = $this->getDoctrine()->getEntityManager()
        ->getConnection()
        ->prepare('SELECT t1.id , t1.name , t2.start_date , t2.end_date
        FROM table1 t1 , table2 t2
        WHERE t1.id = t2.matchId AND  t1.id IN (:ids)');

$stmt->bindValue('ids', $idSArray, \Doctrine\DBAL\Connection::PARAM_INT_ARRAY);
$stmt->execute();

Ou alternativa:
$stmt = $this->getDoctrine()->getEntityManager()
    ->getConnection()
    ->executeQuery('SELECT t1.id , t1.name , t2.start_date , t2.end_date
        FROM table1 t1 , table2 t2
        WHERE t1.id = t2.matchId AND  t1.id IN (:ids)',
        array('ids' => $idSArray),
        array('ids' => \Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
    )
;