Laravel响应()->json()禁用分页

4ioopgfo  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(110)

我要退回两个Laravel API系列,为此我使用

return  response()->json([
               'user' => new UserResource($contractor_user),
               'maintenance' => new MaintenanceCollection($contractor_maintenances),
         ]);

对于变量$contractor_maintenances,我有一个分页方法

$contractor_maintenances = Maintenance::filter($request)
                                            ->whereHas('contactedContractor', function ($query) use ($contractor_user_id) {
                                                return $query->where('user_id', '=', $contractor_user_id);
                                            })          ->with([
                                                'contactedContractor'
                                            ])
                                                        ->latest('maintenances.created_at')
                                                        ->paginate(2);

我的问题是如果我自己归还维护集合

return new MaintenanceCollection($contractor_maintenances);

那么分页就可以工作,但是当我使用

return  response()->json([
               'user' => new UserResource($contractor_user),
               'maintenance' => new MaintenanceCollection($contractor_maintenances),
         ]);

没有显示分页 meta数据。2我该如何解决这个问题?3谢谢。

ctrmrzij

ctrmrzij1#

我发现您可以在JsonResponse中手动插入分页 meta数据,如下所示:

return response()->json([
        'data' => new DataCollection($data),
        'meta' => [
            'total' => $data->total(),
            'currentPage' => $data->currentPage(),
            'lastPage' => $data->lastPage(),
            'perPage' => $data->perPage(),
        ],
        'links' => [
            'first' => $data->url(1),
            'last' => $data->url($data->lastPage()),
            'prev' => $data->previousPageUrl(),
            'next' => $data->nextPageUrl(),
        ],
    ]);

相关问题