2011-12-27 14 views
0

を動作しません。そのプレイリストから1つの結果(ビデオ)しか得られませんが、3つの結果(ビデオ)を取得する必要があります。のSymfonyとDoctrine選択クエリは、私はMを持って適切に

私のクエリは次のとおりです。

$q_videos = Doctrine_Query::create() 
      ->select('V.*, PHV.*') 
      ->distinct(FALSE) 
      ->from('Video V') 
      ->leftJoin('V.VideoSource VS') 
      ->leftJoin('V.PlaylistHasVideo PHV') 
      ->orderBy("PHV.position ASC") 
      ->where('PHV.playlist_id = ? AND V.instance_id = ? AND VS.transcoded = ?', array($this->getObject()->getId(), sfContext::getInstance()->getUser()->getAttribute('instance_id'), 1)); 

私は、ログおよびそのOKでクエリをチェック:phpMyAdminの中でこのクエリを実行すると

SELECT v.id AS v__id, v.published AS v__published, v.share AS v__share, v.public AS v__public, v.title AS v__title, v.description AS v__description, v.thumbnail AS v__thumbnail, v.subtitle AS v__subtitle, v.created_at AS v__created_at, v.updated_at AS v__updated_at, v.views AS v__views, v.highlighted AS v__highlighted, v.created_by AS v__created_by, v.updated_by AS v__updated_by, v.instance_id AS v__instance_id, p.id AS p__id, p.playlist_id AS p__playlist_id, p.video_id AS p__video_id, p.position AS p__position FROM video v LEFT JOIN video_source v2 ON v.id = v2.video_id LEFT JOIN playlist_has_video p ON v.id = p.video_id WHERE (p.playlist_id = '1' AND v.instance_id = '1' AND v2.transcoded = '1') ORDER BY p.position ASC 

それは私に良い結果を返す - 3つの結果(動画)

Doctrineバージョン:1.2.3 Symfonyバージョン:1.4.8

誰も私を助けることができますか?

答えて

1

Videoに使用しているという問題があります。 ->groupBy('PHV.playlist_id')を追加し、->from('PlaylistHasVideo PHV')と設定することができます。

phpMyAdminのようなツールはDoctrineのように水分補給をしないので、Doctrineよりも別の結果が得られます。

+0

私は( 'PlaylistHasVideo PHV')から設定したときにその動作をしますが、その後はVideoオブジェクトではなくPlaylistHasVideoオブジェクトを返します。私はビデオオブジェクトが必要です... – trkich

+0

これはDoctrineオブジェクトの水和でいくつかの "問題"だと思います... Doctrine :: HYDRATE_ARRAYを実行すると、良い結果が得られます。 – trkich

関連する問題