Следует понимать, что даже с использованием перечисленных выше инструментов, без "ручной" сборки запроса не обойтись.
Но самое главное - это и не нужно.
Если даже натужиться и взгромоздить на свое приложение какой-нибудь автопостроитель запросов, то в итоге мы получим следующие последствия:
- куча времени, убитого на поиски, адаптацию, и допиливание означенного автопостроителя
- эмоции вида "как эта №%;%:?У#$^№ вообще работает??!" когда через пол-года придется добавить какое-либо новое поле
- апофеоз, когда потребуется добавить условие, не поддерживаемое автопострителем, какое-нибудь IF EXISTS
Поверьте, затраты на написание запроса вручную (неважно, через убогое mysql_query или Доктрину) - ничто по сравнению с возможностью **прочитать и понять**, для чего, вообще, данный код нужен, и как он это делает.
Поэтому излишняя автоматизация бывает очень вредна. И гоняться за ней не стоит.