Публикации - Laravel

База данных и модели - Постраничная навигация

Общие понятия

Постраничную навигацию мы можем создать с помощью метода paginate(), входящего в состав конструктора Eloquent

    public function index()
    {
        $data = Product::paginate(5);
        return view('product.index',compact('data'));
    }

Кроме метода paginate для реализации постраничной навигацией можно воспользоваться методом simplePaginate:

$users = DB::table('users')->simplePaginate(15);

Результат выполнения этих методов - массив объектов и объект пагинации, который может быть передан в элементы представления.

Пагинация в blade-шаблонах

В файлах blade кроме диррективы @foreach, мы можем использовать встроенный метод links(), который привязывается к объекту $products, и содержит ссылки на другие страницы.

 @foreach($products as $key => $product)
  //
 @endforeach
{!! $products->links() !!}

Теперь мы можем запустить и проверить этот пример. Если мы используем начальную загрузку, необходимо добавить useBootstrap() к поставщику услуг, как показано ниже:

namespace App\Providers;
  
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\Paginator;
  
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
    
    }
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Paginator::useBootstrap();
    }
}

При необходимости, мы можем к запросам пагинации добавлять свои request-запросы

{!! $data->appends(['sort' => 'votes'])->links() !!}

OR

{!! $data->appends(Request::all())->links() !!}

Постраничная пагинация в API

Методы постраничной навигации можем исполозовать и в API. С той лишь разницей, что в API полученный объект выводим в формате JSON.

    $data = Category::paginate(request()->all());    
    return Response::json($data, 200);

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться