我有两个表“系列”和“程序”,程序是多对一的系列。
系列表
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
我想在 Doctrine (1.2) 中获得最新程序的两个系列,在这种情况下是系列 2,然后是系列 1,请参阅程序中的最后两行。
我的猜测是:
$q = Doctrine_Query::create()->from('Series s')
->leftJoin('s.Programs p')
->orderBy('p.id desc')
->limit(2);
但这会返回系列 4 和系列 3。问题是 Doctrine 在执行将包含数据的查询之前使用不同的查询获取 id,他们使用这种策略,因为我认为 MySql 不能在子查询中使用限制。
我的问题,您如何通过 DQL获得系列 2和系列 1 ?