「シリーズ」と「プログラム」の2つのテーブルがあり、プログラムは多対1のシリーズです。
シリーズ表
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つのシリーズ、この場合はシリーズ2、続いてシリーズ1を取得したいと思います。プログラムの最後の2行を参照してください。
私の推測は次のようになります:
$q = Doctrine_Query::create()->from('Series s')
->leftJoin('s.Programs p')
->orderBy('p.id desc')
->limit(2);
しかし、これはシリーズ4とシリーズ3を返します。問題は、MySqlがサブクエリで制限を使用できないため、Doctrineがデータが含まれるクエリを実行する前にIDを取得する別個のクエリを使用することです。
私の質問ですが、 DQLを介してシリーズ2とシリーズ1をどのように入手しますか?