无法使用response() - > json发送paginate元数据

时间:2018-04-03 11:46:23

标签: json laravel api laravel-paginate

我有api,我想向客户发送一些信息。 我正在使用资源收集来做到这一点。

    return response()->json([
        'data' => ProductResource::collection(Product::orderBy('id', 'DESC')->paginate(8)),
        'catdata' => CategoryResource::collection(Category::get()),
        'status' => "200"
    ]);

一切正常但分页元数据不起作用。 它不会发送分页数据。

1 个答案:

答案 0 :(得分:0)

API资源并不意味着彼此使用,这意味着Laravel将无法检测到您想要分页元数据,因为您在Laravel可以读取之前转换为JSON。您最好将您的API响应分开,让客户调用API两次。

public function products()
{
     return ProductResource::collection(Product::orderBy('id', 'DESC')->paginate(8));
}

public function categories()
{
     return CategoryResource::collection(Category::get());
}

您还可以在additional来电时使用ProductResource::collection功能。

public function products()
{
     return ProductResource::collection(Product::orderBy('id', 'DESC')->paginate(8))->additional(['meta' => [
                'categories' => Category::get(),
            ]]);;
}