Doctrine 带限制的关系表排序原则

Doctrine 带限制的关系表排序原则,doctrine,limit,one-to-many,Doctrine,Limit,One To Many,我有两个表格“系列”和“程序”,程序是多对一系列 系列表 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 | progra

我有两个表格“系列”和“程序”,程序是多对一系列

系列表

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
程序表

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。问题是,条令使用了一个独特的查询,在查询数据将包含在哪里之前获取id,他们使用了这种策略,因为我认为MySql不能在子查询中使用limit

我的问题是,您如何通过DQL获得系列2系列1

$q = Doctrine_Query::create()
    ->select('s.name')
    ->addSelect('(SELECT p.series_id FROM Programs p WHERE p.series_id = s.id) as series_name')
    ->from('Series s');
    ->orderBy('p.id desc')
    ->limit(2);