Laravel 5 在laravel中对json数组进行分页

Laravel 5 在laravel中对json数组进行分页,laravel-5,Laravel 5,我目前正在使用Laravel5.6,我有一个api的结果。我正试图对结果进行分页,但我做不到 我的json结果如下: {#922 ▼ +"orders": array:50 [▼ 0 => {#220 ▶} 1 => {#234 ▶} 2 => {#250 ▶} 3 => {#263 ▶} 4 => {#274 ▶} 5 => {#297 ▶} 6 => {#310 ▶} 7 =>

我目前正在使用Laravel5.6,我有一个api的结果。我正试图对结果进行分页,但我做不到

我的json结果如下:

{#922 ▼
  +"orders": array:50 [▼
    0 => {#220 ▶}
    1 => {#234 ▶}
    2 => {#250 ▶}
    3 => {#263 ▶}
    4 => {#274 ▶}
    5 => {#297 ▶}
    6 => {#310 ▶}
    7 => {#322 ▶}
    8 => {#338 ▶}
    9 => {#351 ▶}
  ]
}
然后,我获取订单并将其放入如下变量:
$orders=$call->orders

我尝试过这样做:

$orders = $shopifyData->paginate(20)->toArray();
我得到这个错误: 对数组上的成员函数paginate()的调用

我也尝试过这样做:
$orders::Paginate(20)
也不起作用

我想我错过了如何做到这一点的第一步,但老实说,我迷路了。我真的不知道该怎么办。谷歌有几个例子说明了当你使用一个有说服力的模型从数据库中检索数据时如何做到这一点。它还显示了当您查询数据库但什么也不查询时如何执行此操作。5.6页码下的laravel文件: 分页查询生成器结果 分页有说服力的结果

手动创建分页器 非常有限,仅表示使用paginator或Lengshawarepginator和使用array_slice


有人能告诉我如何实现这一点的正确方向吗?

我假设您正在尝试以Laravel方式对一个普通的旧PHP数组进行分页。
paginate
函数仅适用于查询生成器,因此不适用于数组。 要做您想做的事情,您首先需要知道用户在哪个页面查看。通常,当前页面通过
page
GET参数传递,但Laravel的
lengshawarepaginator
提供了提取该页面的功能。您需要
使用
才能使其正常工作

use Illuminate\Pagination\LengthAwarePaginator; // don't forget to add this
....
$current_page = LengthAwarePaginator::resolveCurrentPage();
然后,您需要对包含结果的数组进行切片。相应地设置
$perPage
变量。那么您需要:

  • 将数组转换为
    集合
    切片
    的步骤

    $orders = $call->orders;
    $orders_collection = new Collection($orders); // needs a use statement
    $orders_collection = collect($orders); // alternative. You can use helper function
    $current_page_orders = $orders_collection->slice(($current_page - 1) * $perPage, $perPage)->all(); // slice($offset, $number_of_item)
    
  • 或者直接为您的阵列使用
    array\u slice

    $orders = $call->orders;
    $current_page_orders = array_slice($orders, ($current_page - 1) * $perPage, $perPage);
    
  • $current\u page\u orders
    仍然是一个(切片的)
    集合
    数组
    ,因此让我们创建一个paginator实例

    $orders_to_show = new LengthAwarePaginator($current_page_orders, count($orders_collection), $perPage);
    
    $orders\u to\u show
    现在是您想要的分页结果。您应该能够像处理数据库中的分页结果一样使用它