3

使用资源显示数据后,我遇到了分页问题。在此之前,我使用此代码显示数据,输出也显示分页。

输出 在此处输入图像描述

控制器

$All = Customers::with('order')->paginate(10);

return response()->json([
    'code' => 0,
    'success' => true,
    'data' => $All,
], 200);

但是在我使用资源显示数据之后,分页就消失了。

$All = Customers::with('order')->paginate(10);

return response()->json([
    'code' => 0,
    'success' => true,
    'data' => DataResource::collection($All),
], 200);

数据资源

public function toArray($request)
{
    //return parent::toArray($request);
    return [
        'name' => $this->name,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
        'order' => Resources::collection($this->order)
    ];
}
4

1 回答 1

0

看来您正在使用Eloquent: API Resources,尽管不确定使用的是哪个版本的 Laravel,因为较新的版本显示了非常不同的分页。

当我显示dump()第一个片段时,分页器(也称为LengthAwarePaginator对象)位于响应的根目录中:

LengthAwarePaginator {#406 ▼
  #total: 3
  #lastPage: 1
  #items: Collection {#401 ▶}
  #perPage: 10
  #currentPage: 1
  #path: "http://laravelsoplayground"
  #query: []
  #fragment: null
  #pageName: "page"
  +onEachSide: 3
  #options: array:2 [▶]
}

应用资源后,分页器仍然存在,但已移至resource属性。

AnonymousResourceCollection {#331 ▼
  +collects: "App\Http\Resources\DataResource"
  +collection: Collection {#214 ▶}
  +resource: LengthAwarePaginator {#406 ▶}
  +with: []
  +additional: []
}
于 2019-08-20T16:57:24.300 回答