我面临使用偏移量和限制获取记录的问题。
当前我的数据库中有73条记录
我的身体要求如下所示。
{
"email": "",
"name": "",
"role_id":"",
"pageNumber": 8,
"pageSize": 10
}
此处页数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]);
希望您能理解我的问题。 非常感谢您的帮助。谢谢
答案 0 :(得分: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();