首页 > 解决方案 > 如何让 Laravel 5.8 分页与 Angular 8 一起工作

问题描述

使用 laravel 分页从数据库中获取下一组结果时遇到问题。我的结果从这条路线看起来像这样:api/getMerchants

{
    "merchants": {
        "current_page": 1,
        "data": [], // contains some data
        "first_page_url": "/?page=1",
        "from": null,
        "next_page_url": "/?page=2",
        "path": "/",
        "per_page": 15,
        "prev_page_url": null,
        "to": null
    }
}

现在,当我尝试通过调用 api/getMerchants 路由并将下一页 url 值附加到它来获取下一组结果时,我得到了相同的结果集,但这次只有 current_page 值更改为 2 和 next_page_url更改为 3。最终的 url 如下所示:

api/getMerchants/?page=2

我究竟做错了什么 ?我如何获得下一组结果,当我尝试使用邮递员时,我也会得到同样的结果。

这是我的控制器:

public function getMerchants(Request $request){

        //get all registered companies 
        $getmerchants = DB::table('merchants')
        ->join('joint_companies', 'joint_companies.id', '=', 'super_id')
        ->join('company_admin', 'company_admin.id', '=', 'admin_id')
        ->select('merchants.*','company_admin.name AS admin_name','joint_companies.name AS exec_name')
        ->get();

        //clean data
        $merchantsdata = [];

        $merchants = $getmerchants->map(function($items){
            $merchantsdata['id'] = $items->id;
            $merchantsdata['merchant_name'] = Crypt::decryptString($items->merchant_name);
            $merchantsdata['status'] = $items->status;
            $merchantsdata['country'] = $items->country;
            $merchantsdata['logo'] = $items->logo;

            return $merchantsdata;
         });

         $objects = new Paginator($merchants, 15);
         $response = [
            'merchants' => $objects
        ];
        return response()->json($response, 200);

    }

标签: angularlaraveleloquentpagination

解决方案


我遇到了同样的错误。要解决这个问题,您需要通知您的数据库表中有多少项目?如果 item 为 2 并且您的 per_page 值为 5 那么您只能获得一页数据。现在,如果您使用 page = 2(对于第二页)点击请求,那么您如何获取第二页数据。自然它会显示你的空数据。你的查询已经显示出来了。


推荐阅读