我需要编写2个嵌套查询,如下所示:
SELECT * from table1 t1 WHERE t1.value1 = 5 AND t1.id IN (
SELECT t2.id FROM t2 LEFT JOIN t3 ON t2.id = t3.t2_id WHERE ....
)
问题是Query1和嵌套查询Query2是doctrine查询对象,所以如果我这样做:
$q1->where('t1.id IN ('.$q2->getSqlQuery().')', $q2->getFlattenedParams())
它不起作用,因为组件名称需要匹配定义;
$q1->getSqlQuery()
返回实际的表名,而$ q1-> where期望在schema.yml中定义的t2和t3的组件名称
那么我怎样才能实现所需的查询(不运行2个单独的查询并使用PHP从$ q2的结果中生成数组中的where)。
答案 0 :(得分:0)
到目前为止,这对我有用:
$q1->where('t1.id IN ('.$q2->getDql().')', $q2->getFlattenedParams());
如果我遗失了某些内容,请告诉我