在 Propel 分页中:查询与条件

发布于 2024-12-27 20:01:04 字数 554 浏览 2 评论 0原文

我在 propel 中有这个查询,

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

我正在尝试对返回的结果进行分页,所以我想我需要使用 PropelPager,根据文档,它是这样创建的

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

我不明白的是如何转换 1 行 $我通常使用的单位查询,到$criteria

另外,有没有办法将 $units 等普通查询与 PropelPager 一起使用?这比更改查询以使用 $criteriadoSelect 等更容易。

I have this query in propel

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

I'm trying to paginate the results returned, so I guess I need to use PropelPager, which according to documentation is created like this

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

What I don't understand is how to convert the 1 line $units query that I usually use, to $criteria.

Also, is there a way to use a normal query like $units with the PropelPager? It would be easier than changing the query to use $criteria and doSelect, etc.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉目亦如画i 2025-01-03 20:01:04

你可以简单地这样做:

$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 类只是类固醇的标准;)

You can simply do this :

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

And if you really want to use a custom pager (but you probably don't) :

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

Btw, Propel XXXQuery classes are just Criteria on steroids ;)

冬天旳寂寞 2025-01-03 20:01:04

paginate 方法创建的分页器是 PropelModelPager 的一个实例,它是与 PropelPager 完全不同的类(符合不同的接口)。

由于 Query 对象扩展了 Criteria,因此也可以使用 PropelPager,我发现这是必要的,因为我们使用 PropelPager 的子类,它添加了缓存等功能。

<块引用>

$unitQuery = UnitQuery::create();

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

The pager created by the paginate method is an instance of PropelModelPager which is an entirely different class (conforming to a different interface) to the PropelPager.

As the Query object extends Criteria it is also possible to use the PropelPager which I found necessary as we use a child class of PropelPager which adds caching amongst other things.

$unitQuery = UnitQuery::create();

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文