2012-01-18 14 views
1

対クエリ私はPropel:基準

$units = UnitQuery::create()->find(); 

でこのクエリを持って、私は結果が返されたページ付けしようとしているので、私は、私はPropelPagerを使用する必要があると思い、マニュアルに従ってように作成されていますこの

$criteria = new Criteria(); 
$criteria->add(BookPeer::AUTHOR, $authorId); 
$pager = new PropelPager($criteria, 'BookPeer', 'doSelect', $page = 1, $rowsPerPage = 30); 

私は理解していないこと$criteriaに、私が通常使用1行$unitsクエリを変換する方法です。

$unitsのような通常のクエリをPropelPagerと一緒に使用する方法はありますか?

$units = UnitQuery::create() 
    ->filterByStuff($stuff) 
    ->paginate($page = 1, $rowsPerPage = 30); 

そして、あなたが本当にカスタムページャを使用する(しかし、あなたはおそらくいない場合:それはあなたが単にこれを行うことができます

答えて

6

など、$criteriadoSelectを使用するようにクエリを変更するよりも容易になるだろう):

$query = UnitQuery::create()->filterByStuff($stuff); 
$pager = new MyModelPager($query, $rowsPerPage = 30); 
$pager->setPage($page = 1); 
$pager->init(); 

ところで、PropelのXXXQueryクラスはステロイドだけ基準である。)

0

のpaginateメソッドによって作成されたページャは、例えば0でありますPropelPagerと全く異なるクラス(別のインタフェースに準拠)であるPropelModelPager。

QueryオブジェクトがCriteriaを拡張するので、他のものの中でキャッシュを追加するPropelPagerの子クラスを使用するときに必要なPropelPagerを使用することもできます。

$ unitQuery = UnitQuery ::作成()

$ pager = new PropelPager($ unitQuery、 'UnitPeer'、 'doSelect'、$ page = 1、$ rowsPerPage = 30);