2011-07-11 4 views
0

私は、クエリービルダーを使用して、他のDoctrineプロジェクトで以前に記述されたクエリを持っています。Doctrine_Tableのクエリビルダ?

$qb->select('c', 'm') 
      ->from('Chapter c') 
      ->leftJoin('c.Book m') 
      ->orderBy('c.chapterno DESC') 
      ->addOrderBy('m.id ASC') 
      ->groupBy('m.id') 
      ->where('c.chapterno = (SELECT MAX(v.chapterno) FROM Chapter v WHERE v.mid = m.id)') 
      ->limit($max); 

symfonyのDoctrine_tableの継承クラスでこれをどのように複製できますか?

私は、あなたのChapterTableクラスでは、次のようなものをsymfonyの1.4

答えて

1

Hereは素晴らしいソリューションですクエリを整理する:

1

を使用しています:

public function getChapters($max) 
{ 
    $qry = self::getInstance() 
     ->createQuery("c") 
     ->leftJoin('c.Book m') 
     ->orderBy('c.chapterno DESC') 
     ->addOrderBy('m.id ASC') 
     ->groupBy('m.id') 
     ->where('c.chapterno = (SELECT MAX(v.chapterno) FROM Chapter v WHERE v.mid = m.id)') 
     ->limit($max); 

    return $qry->execute(); 
} 

その後、あなたは例えばでこれを呼び出すことができます。

$myMaxValue = 25; 
$results = Doctrine::getTable("Chapter")->getChapters($myMaxValue);