можно ли сделать:
$q->createQuery('q')
->whereIn('q.id', $q2)
Где $q2 — это другой объект Doctrine_Query. Потому что мой подзапрос сложный и я не хочу писать его на SQL...
можно ли сделать:
$q->createQuery('q')
->whereIn('q.id', $q2)
Где $q2 — это другой объект Doctrine_Query. Потому что мой подзапрос сложный и я не хочу писать его на SQL...
К сожалению, согласно документации API Doctrine, вы не можете передать другой объект запроса в whereIn()
, поэтому вам придется заранее получить свои идентификаторы и передать их в виде массива. Однако будьте осторожны, потому что, если вы передадите пустой массив, для этих идентификаторов не будет НИКАКОЙ ФИЛЬТРАЦИИ. Другими словами: он вернет все строки, присутствующие в вашей таблице, а не ни одну.
При использовании whereIn параметр должен быть массивом. Вы можете использовать execute(array(), Doctrine_Core::HYDRATE_ARRAY) для возврата массива вместо объекта.