gpt4 book ai didi

php - Laravel 4 - 如何在 Eloquent ->paginate() 中使用 'offset' 而不是 'page'?

转载 作者:搜寻专家 更新时间:2023-10-31 21:10:33 27 4
gpt4 key购买 nike

我正在将现有的 REST API 迁移到 Laravel 4.1,该 API 当前使用 offset 作为查询字符串参数来指定 offset记录需要。

我想使用默认的 Eloquent 的 paginate(),但是这些搜索是针对 page querystring 参数。当然,它使用页码(如 2)而不是偏移量(如 200)。

有没有一种简单的方法可以针对这种情况配置 paginate 函数?还是我需要使用 ->skip()->take() 函数并自己制作到下一页的链接?

@Anam:我想使用:

$warehouses = Warehouse::orderBy('name')
->paginate($perpage);

这适用于 http://example.org/api/warehouses?page=2 , 但我希望它与 http://example.org/api/warehouses?offset=200 一起使用

我可以使用偏移量:

$warehouses = Warehouse::orderBy('name')
->skip($offset)
->take($perpage)
->get();

但是我不能对 API 和 Web View 使用相同的 Controller 。所以我更喜欢一些方法来使第一个工作。

最佳答案

But then I cannot use the same controller for the API and the web view. So I would prefer some way to make the first one working.

为什么不呢?如果您已经知道 ?offset 将在 API 中可用,而 ?page 将在您的普通 View 中可用。只需检测找到的内容并适当应用即可。


也就是说,您可以检索查询构建器使用的分页器环境实例,并将您定义的页码传递给它。

$perPage = 50;
$currentPage = 1;

if ($offset = Input::get('offset'))
{
$currentPage = ($offset / $perPage);
}

Warehouse::resolveConnection()->getPaginator()->setCurrentPage($currentPage);

$warehouses = Warehouse::orderBy('name')->paginate($perpage);

请注意,虽然我对此进行了测试并且它有效,但我不知道它会对您可能在同一页面上运行的其他查询产生多大影响。仔细研究,慎用。

关于php - Laravel 4 - 如何在 Eloquent ->paginate() 中使用 'offset' 而不是 'page'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759969/

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