gpt4 book ai didi

php - 如何检索 MySQL 记录列表中的下一项?

转载 作者:行者123 更新时间:2023-11-29 14:00:32 24 4
gpt4 key购买 nike

我正在使用 Propel 与 symfony 合作,尝试创建后退和下一步按钮的功能:

$c = new Criteria();

$c->add(CartPeer::CATEGORY, $category);
$c->add(CartPeer::ITEM_ID, $item->getItemId(), Criteria::GREATER_THAN);
$c->addAscendingOrderByColumn(CartPeer::ITEM_NAME);

$this->next = CartPeer::doSelectOne($c);

现在,如果项目的标识符按升序排列,则效果很好,但通常情况并非如此。

如何修改此代码,以便它在返回的记录列表中选择紧随当前 $item 之后的项目,而不是选择具有下一个升序数字 ID 的项目?

示例:

Record: 0 | ItemID: 5
Record: 1 | ItemID: 2
Record: 2 | ItemID: 7 <-- $item
Record: 3 | ItemID: 4 <-- I want this to be $next
Record: 4 | ItemID: 9

最佳答案

我实际上并不使用 Symfony,但如果您使用的是 Propel 的最新版本,那么您可以访问 paginate() method这最终对你来说可能会好得多。

$pager = CartQuery::create()
->filterByCategory($category)
->orderBy(CartPeer::ITEM_NAME)
->paginate($pageToLoad, $resultsPerPage);
foreach($pager as $result) {
// do something with the record
}
if ($pager->haveToPaginate()) {
// build some paging items using PropelModelPager methods:
if (!$pager->isFirstPage()) {
echo "<a href='?page=".$pager->getPreviousPage()."'>Previous</a>";
}
if (!$pager->isLastPage()) {
echo "<a href='?page=".$pager->getNextPage()."'>Next</a>";
}
}

如果您确实想按照自己的方式进行操作,您可能希望完全消除 ItemId 的限制,而只需添加偏移量和限制:

// This will be however many results have already been shown (page size?)
$offset = 10;

$c = new Criteria();
$c->add(CartPeer::CATEGORY, $category);
$c->addAscendingOrderByColumn(CartPeer::ITEM_NAME);
$c->setOffset($offset);
$this->next = CartPeer::doSelectOne($c);

关于php - 如何检索 MySQL 记录列表中的下一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com