我在推进中有这个查询
$units = UnitQuery::create()->find();
我正在尝试对返回的结果进行分页,所以我想我需要使用PropelPager,根据文档创建这样的
$criteria = new Criteria();
$criteria->add(BookPeer::AUTHOR, $authorId);
$pager = new PropelPager($criteria, 'BookPeer', 'doSelect', $page = 1, $rowsPerPage = 30);
我不明白如何将我经常使用的1行$units
查询转换为$criteria
。
此外,有没有办法像$units
一样使用PropelPager
这样的普通查询?这比使用$criteria
和doSelect
等更改查询更容易。
答案 0 :(得分:6)
你可以这样做:
$units = UnitQuery::create()
->filterByStuff($stuff)
->paginate($page = 1, $rowsPerPage = 30);
如果你真的想使用自定义寻呼机(但你可能没有):
$query = UnitQuery::create()->filterByStuff($stuff);
$pager = new MyModelPager($query, $rowsPerPage = 30);
$pager->setPage($page = 1);
$pager->init();
顺便说一下,Propel XXXQuery类只是类固醇的标准;)
答案 1 :(得分:0)
由paginate方法创建的寻呼机是PropelModelPager的一个实例,它是与PropelPager完全不同的类(符合不同的接口)。
当Query对象扩展Criteria时,我也可以使用我认为必要的PropelPager,因为我们使用PropelPager的子类,它可以在其他方面添加缓存。
$ unitQuery = UnitQuery :: create();
$ pager = new PropelPager($ unitQuery,'UnitPeer','doSelect',$ page = 1,$ rowsPerPage = 30);