Laravel Offset не компенсируется и / или не пропускается - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть база данных с данными, и я хочу пропустить / сместить первые 3 строки.

    $data = Data::orderBy('created_at','desc')->skip(3)->paginate(1);
    $data = Data::orderBy('created_at','desc')->offset(3)->paginate(1);

оба запроса возвращают все результаты с начала.Кто-нибудь может мне помочь с этим?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Нельзя использовать paginate() и skip() вместе.Вы можете сделать это:

$data = Data::orderBy('created_at','desc')->skip(3)->take(10)->get(); и обновить эти значения, пропустить и принять значения в соответствии с вашей пользовательской реализацией.

Если вы буквально хотите пропустить первые 3 строки и никогда не использовать их в нумерации страниц, вы можете сделать:

$dataToEliminate = Data::orderBy('created_at','desc')->take(3)->select('id')->pluck('id');

$data = Data::whereNotIn('id', $dataToEliminate)->orderBy('created_at','desc')->skip(3)->paginate(1);

См. документацию для справки.

0 голосов
/ 14 февраля 2019

skip не похоже на paginate.Что вы можете сделать, это исключить строку с помощью whereNotIn.

$data = Data::orderBy('created_at','desc')->whereNotIn('id', [1,2,3])->paginate(1);

Если вы не знаете id, вы можете запросить и использовать результат.

$id = Data::orderBy('created_at','desc')->take(3)->pluck('id');
$data = Data::orderBy('created_at','desc')->whereNotIn('id', $id)->paginate(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...