Разбиение на страницы API Laravel 5.3

я работаю над API, и я застрял в нумерации страниц, сначала я должен отправить только первые 10 записей позже на основе предельного значения, переданного пользователем, я должен отправить next 10 записей

так что я сделал это

//search Drivers
public function getSearchList($limit) 
{
    //dd($limit);
    $drivers = Driver::paginate($limit)
               ->select('id','first_name','last_name','phone_number','registration_id')
               ->orderBy('first_name', 'asc')
               ->get();

    return Response::json([
        'data' => $drivers->all()
    ]);
}

но я получаю сообщение об ошибке при запросе http://localhost:8000/api/v1/search-list/10

BadMethodCallException in Macroable.php line 74:
Method select does not exist.

я что-то не так делаю

жду очень нужной помощи

благодарю вас


person Mr Robot    schedule 21.01.2017    source источник


Ответы (2)


Вы должны использовать метод paginate() вместо get():

$drivers = Driver::select('id', 'first_name', 'last_name', 'phone_number', 'registration_id')
           ->orderBy('first_name', 'asc')
           ->paginate($limit);
person Alexey Mezenin    schedule 21.01.2017
comment
Большое вам спасибо, вы, ребята, как всегда великолепны, не могли бы вы рассказать мне, как отобразить сообщение not found, если они введут что-то вроде 555, если данные только 120, спасибо - person Mr Robot; 21.01.2017
comment
@MrRobot просто добавьте что-то вроде if (count($drivers) == 0) { // There is no data } - person Alexey Mezenin; 21.01.2017
comment
и я хочу отправить следующие 10, а не последние отправленные 10 значений - person Mr Robot; 21.01.2017

$drivers = Driver::
          select('id','first_name','last_name','phone_number','registration_id')
           ->orderBy('first_name', 'asc')
           ->paginate($limit);

Удалить ; после paginate($limit)

https://laravel.com/docs/5.3/pagination

person Danon    schedule 21.01.2017
comment
большое спасибо за ваше время очень ценю это - person Mr Robot; 21.01.2017