У меня есть две таблицы "серии" и "программы", где количество программ составляет от одной до одной серии.
Таблица серии
id | name
--------------
1 | lorem
2 | ipsum
3 | foo
4 | bar
Таблица программ
id | name | series_id
---------------------
1 | program1 | 1
2 | program2 | 2
3 | program3 | 3
4 | program4 | 4
5 | program5 | 1
6 | program6 | 2
7 | program7 | 3
8 | program8 | 4
9 | program9 | 1
10 | program10 | 2
11 | program11 | 1
12 | program12 | 2
Я бы хотел, чтобы в Доктрине (1.2) две серии с самой последней программой, в данном случае серия 2, затем серия 1, увидели последние две строки в программах.
Мое предположение будет:
$q = Doctrine_Query::create()->from('Series s')
->leftJoin('s.Programs p')
->orderBy('p.id desc')
->limit(2);
но это возвращает серию 4 и серию 3. Проблема в том, что Doctrine использует отдельный запрос для получения идентификаторов перед выполнением запроса, в который будут включены данные, они используют эту тактику, так как MySql не может использовать limit в подзапросах, я думаю.
Мои вопросы, как бы вы получили серии 2 и серии 1 через DQL?