2011-07-11 24 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的繼承類中複製此代碼?

我使用symfony的1.4

回答

1

Here是一個很好的解決方案組織您的查詢:

1

在你ChapterTable類,類似如下:

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);