Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête sql brute Symfony2.3 avec clause IN

Réponse :

Il y a donc au moins deux erreurs que vous avez commises. Le premier est ce que @Alarid a dit :vous ne devriez pas imploser votre tableau. La seconde est que vous devez utiliser DoctrineDBALTypes Conversion pour la IN clause lors de l'exécution d'une instruction préparée.

Et enfin votre requête est la suivante :

$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 alternative :

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