我在推进中有这个查询
$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
等更容易。
您可以简单地执行以下操作:
$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 XXX查询类只是类固醇的标准;)
分页方法创建的寻呼机是PropelModelPager的一个实例,它与PropelPager是完全不同的类(符合不同的接口)。
由于Query对象扩展了Criteria,所以也可以使用PropelPager,我认为这是必要的,因为我们使用了PropelPageer的子类,它添加了缓存等功能。
$unitQuery=unitQuery::create();
$pager=新的PropelPager($unitQuery,'UnitPeer','doSelect',$page=1,$rowsPerPage=30);