0

私は 2 つのテーブルを持ってrequestいます。これrequest_replyLEFT JOIN、応答の数とともに要求を選択するクエリです。

SELECT request.id, COUNT(request_reply.id) as replies
FROM request LEFT JOIN request_reply ON request.id = request_reply.request_id
GROUP BY `request`.`id`
ORDER BY replies ASC

しかし、それを Doctrine クエリとして書こうとすると:

$query = Doctrine_Query::create()
         ->select('Request.id, COUNT(RequestReply.id) as reply_count')
         ->from('Request')
         ->leftJoin('RequestReply ON Request.id = RequestReply.request_id')
         ->groupBy('Request.id')
         ->orderBy('reply_count ASC, Request.id DESC');

なしで出てきますLEFT JOIN

SELECT `r`.`id` AS `r__id`, COUNT(`r2`.`id`) AS `r2__0` 
FROM `request` `r`, `request_reply` `r2`
GROUP BY `r`.`id`
ORDER BY `r2__0` ASC, `r`.`id` DESC

何が悪いのかわかりません。すべてを試しましたが、JOIN何をしても結果のクエリには何もありません。これは Doctrine 1 のレガシー プロジェクトであるため、Doctrine 2 に更新することはできません。

アップデート

マッピング。

Request.php

$this->hasMany('RequestReply as Replies', array('local' => 'id', 'foreign' => 'request_id'));

RequestReply.php

$this->hasOne('Request', array('local' => 'request_id', 'foreign' => 'id'));
4

1 に答える 1