【问题标题】:How to use offset & limit in laravel如何在 laravel 中使用偏移和限制
【发布时间】:2019-12-25 15:30:40
【问题描述】:

我在使用偏移量和限制获取记录时遇到问题。

目前我的数据库中有 73 条记录

我的身体请求如下所示。

{

"email": "",
"name": "",
"role_id":"",
"pageNumber": 8,
"pageSize": 10
 }

这里 pageNumber 8 表示第 7 页,因为它从 0 开始 页面大小为 10 表示希望在页面中显示 10 条记录,预期输出应为 3 条记录,因为在 70 到 80 之间有 3 条记录,因为我的总记录为 73 条,它应该显示 3 条记录。

但它显示 10 条记录:

我的代码:

                $pram = $request->name;
    $email= $request->email;
    $roleId= $request->role_id;
    $pageNumber= $request->pageNumber;
    $pageSize= $request->pageSize;

    $UserResultQuery = User::with('userBasicInfo','userFacility','roles');

    if (!empty($pram)) {
        $UserResultQuery->where(function ($query) use ($pram) {
            $query->whereHas('userBasicInfo', function ($query1) use ($pram) {
                $query1->where('first_name', 'like', '%' . $pram . '%');
                $query1->orWhere('middle_name', 'like', '%' . $pram . '%');
                $query1->orWhere('last_name', 'like', '%' . $pram . '%');

            })->with(['userBasicInfo' => function ($query1) use ($pram) {
                $query1->where('first_name', 'like', '%' . $pram . '%');
                   $query1->orWhere('middle_name', 'like', '%' . $pram . '%');
                   $query1->orWhere('last_name', 'like', '%' . $pram . '%');
            }]);
        });
    }
    if (!empty($roleId)) {
        $UserResultQuery->where(function ($query) use ($roleId) {
            $query->whereHas('userFacility', function ($query1) use ($roleId) {
                $query1->where('role_id', $roleId);
            })->with(['userFacility' => function ($query1) use ($roleId) {
                $query1->where('role_id', $roleId);
            }]);
        });
    }
    if (!empty($email)) {
        $UserResultQuery->where('email', 'like', '%' . $email . '%');
    }

    $results=$UserResultQuery->offset($pageNumber)->limit($pageSize)->get();
    $results=$results->toArray();       // here using offset and limit
        $totalRecords=count($allUsers);

     return response(['status' => true, 'data' => $user_array,'totalRecords' => $totalRecords]);

【问题讨论】:

  • 您正在使用您的$pageNumber 作为偏移量,但它没有偏移量(以行数计)。要获得偏移量,您必须将其乘以您的页数(例如 $pageSize),例如 $offset = ($pageNumber - 1) * $pageSize
  • 能否请您在我的代码中实现您的逻辑,这将对我有更多帮助,谢谢

标签: php laravel search limit offset


【解决方案1】:

将偏移行数量传递给 offset() 而不是页码。

$offset = ($pageNumber - 1) * $pageSize;
$results=$UserResultQuery->offset($offset)->limit($pageSize)->get();

你也可以使用这个forPage(int $page, int $perPage = 15)doc。

$results=$UserResultQuery->forPage($pageNumber, $pageSize)->get();

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 2016-06-09
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多