sql >> Databasteknik >  >> RDS >> Mysql

Symfony2.3 raw sql-fråga med IN-klausul

Svar:

Så det är åtminstone två misstag du gjorde. Den första är vad @Alarid sa:du ska inte implodera din array. Det andra är att du måste använda DoctrineDBALTypes Conversion för IN clause när du kör ett förberett uttalande.

Och slutligen lyder din fråga så här:

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

Eller alternativ:

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


  1. Använder MYsql 5.6 Memcache

  2. Fyll MySQL registrerar en-till-många relaterade tabeller i en åtgärd

  3. Hur ställer jag in standardschemat för en användare i MySQL

  4. Jämföra mellan rader i samma tabell i Oracle