在属性分页中:查询与条件


in Propel pagination: query vs. criteria

我在推进中有这个查询

$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一起使用?这将比更改查询以使用$criteriadoSelect等更容易。

您可以简单地执行以下操作:

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