@mrSeller

Как пропустить некоторое количество строк в выборке в Laravel?

Выборка проходит через множество фильтров, в итоге мы получаем отфильтрованный и отсортированный $users.
И нужно всего лишь пропустить некоторое количество первых строк (кол-во * страница) и отобрать несколько следующих строк, т.е. это кастомная пагинация.

И тут я столкнулся с проблемой: методы limit(6) и take(6) отлично работают на $users, а вот offset(2) и skip(2) выдают ошибку, что таких методов не существует.

Что же делать в такой ситуации?
Почему не работают методы, описанные в доках и предложенные (и отмеченные решениями) в подобных вопросах о пагинации?

Код:
public function getUsers (Request $request) {
    if ( $request->drivecats ) {
        $drivecats = explode(',', $request->drivecats);
        $users_id = DrivecatUser::whereIn('drivecat_id', $drivecats)->with('drivecats')->pluck('user_id');
        $users = User::whereIn('id', $users_id)->get();
    } else {
        $users = User::has('drivecats')->get();
    }

    $users = $users->skip(1)->take(6);

    return view('pages.users', ['users' => $users]);
}


Ошибка вылетает:
Method skip does not exist.
либо
Method offset does not exist.

Смена методов местами не помогла.
  • Вопрос задан
  • 186 просмотров
Решения вопроса 1
@mrSeller Автор вопроса
Убрал из запроса ->get() и вставил его после "пагинирования".
$users = $users->skip(1)->take(6)->get();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы