Trả lời:
Vì vậy, có ít nhất hai sai lầm bạn đã làm. Đầu tiên là những gì @Alarid đã nói:bạn không nên mã hóa mảng của mình. Thứ hai là bạn phải sử dụng DoctrineDBALTypes Conversion
cho mệnh đề IN clause
khi chạy một câu lệnh đã chuẩn bị.
Và cuối cùng truy vấn của bạn là:
$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();
Hoặc thay thế:
$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)
)
;