در این پست میخوام آموزش صفحهبندی (paginator) در لاراول رو بدم خدمتتون. توی این آموزش من از query builder استفاده کردم.
تنها نکته این هستش که من از لاراول 5.6 استفاده میکنم 🙂
فرض کنید جداول دیتابیس شما به صورت زیر هستش:
حالا میخوایم پستهای مربوط به یک دسته خاص رو نشون بدیم. category_id در متغیر $id هستش:
$post_id_tmp = DB::table('blogs') ->leftJoin('blogs_category_relation', 'blogs.post_id', '=', 'blogs_category_relation.post_id') ->where('blogs_category_relation.category_id',$id) ->orderByRaw('blogs.post_id DESC') ->paginate(5);
اون تیکهی
->paginate(5);
دقیقا برای صفحه بندی هستش و ۵ پست رو نشون میده توی هر صفحه.
حالا اطلاعات رو میفرستیم سمت view که ساختیم.
return view('blog-category',compact('post_id_tmp'));
داخل view برای نمایش اطلاعاتی که از دیتابیس خواندیم به این صورت عمل میکنیم:
@foreach ($post_id_tmp as $posts) {{ $posts->title }} {{ $posts->description }} @endforeach
و برای نمایش لینک صفحات مختلف این دستور را استفاده میکنیم:
{{ $post_id_tmp->links() }}
به همین سادگی 🙂
اشکال کار شما اینه که دستور
{{ $post_id_tmp->links() }}
رو درست فراخوانی نکردید
باید دستور زیر رو در ترمینال و در مسیر پروژه اجر کنید تا فایلهای تمپلت در مسیر resources/views/vendor/pagination ایجاد بشن
دستور:
php artisan vendor:publish –tag=laravel-pagination
بعد میتونید دستور لینک رو به این صورت قرار بدید:
{{ $post_id_tmp->links(‘vendor.pagination.bootstrap-4’) }}
این برای زمانی هستش که ما بخوایم از view غیر از view پیشفرض استفاده کنیم. ولی در صورتی که از view پیشفرض استفاده کنیم درست هستش دستورات 🙂