2016-03-06 5 views
2

мне нужно написать 2 вложенных запросов следующим образом:Symfony 1 Доктрина запрос в запросе

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 являются объектами запроса доктрины, так что если я делаю:

$q1->where('t1.id IN ('.$q2->getSqlQuery().')', $q2->getFlattenedParams()) 

не работает, поскольку имена компонентов должны соответствовать определению;

$q1->getSqlQuery() 

возвращает фактические имена таблиц, в то время как $ Q1-> где ожидает компонентных имена t2 и t3, как определено в schema.yml

Так как я могу достичь требуемого запроса (без запуска 2 отдельные запросы и использовать PHP для генерации где в массиве из результатов $ q2).

ответ

0

До сих пор это работает для меня:

$q1->where('t1.id IN ('.$q2->getDql().')', $q2->getFlattenedParams()); 

Пожалуйста, дайте мне знать, если я что-то

отсутствует
Смежные вопросы