我正在尝试使用Doctrine EntityManager运行原始SQL查询,用于IN子句,如下所示。
$idSArray = Array ( [0] => 1 [1] => 2 )
$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)');
$params = array(
'ids' => implode( ",", $idSArray )
);
$stmt->execute($params);
$results = $stmt->fetchAll();
但是我只能得到ID = 1的结果。如果我将WHERE IN条件硬编码为
WHERE t1.id = t2.matchId AND t1.id IN (1,2)');
然后获取这两个ID的结果。有人能告诉我在传递$params数组时我做错了什么吗?我还打印了implode的结果,输出为1,2。所以我找不到错误,也不知道如何使用IN语句执行原始SQL查询。