3

doctrinesQueryBuilderでエンティティの配列を取得するためにselectを使用したいと思います。しかしORDER BY、外部属性(外部キーに関連するテーブルの属性)を使用するが必要です。直感的に書きたいのはこんな感じです。

$repo = $this->getDoctrine()->getRepository('MyBundle:relation_table');

$query = $repo->createQueryBuilder('r')
 ->orderBy('r.fevent.date', 'DESC')
 ->getQuery();

当然のことながら、これは機能しません。SQLでは、SELECT次のようになります。

SELECT r.* FROM relation_table AS r
INNER JOIN events AS e
    ON e.IDevent = r.Fevent
ORDER BY e.date

しかし、エンティティオブジェクトを返すためにDoctrineも必要です。私は2つの可能な解決策を考えます:

  1. QueryBuilderを使用して、、INNER JOINまたはを作成します
  2. 上記と同じように、無料のSQLステートメントを作成し、Doctrineにその結果を使用してエンティティオブジェクトを作成するように指示します。

ヒントはありますか?ありがとう。

4

2 に答える 2

2

注文するエンティティに参加する必要があります。

$query = $repo->createQueryBuilder('r')
    ->join('r.fevent', 'f')
    ->orderBy('f.date', 'DESC')
    ->getQuery()
;
于 2012-10-15T12:34:55.770 に答える
0

Doctrine Query (提案された最初のソリューション) で両方のテーブルを結合するのは非常に簡単です。ここを見てください: http://symfony.com/doc/2.0/book/doctrine.html#joining-to-related-records

同様の質問がここで回答されました: Doctrine 2: How to search an entity by its association's value?

于 2012-10-15T09:59:52.613 に答える