صفحه بندی (Pagination) در لاراول

سید جلال اسماعیل زاده
اخرین بروزرسانی 4 دی 1402
0 نفر ثبت نام کرده اند

در مورد این پست آموزشی

pagination در لاراول

صفحه بندی (Pagination) در لاراول

توی این پست آموزشی قصد داریم نحوه صفحه بندی یا همون Pagination رو در لاراول آشنا بشیم. صفحه بندی ها (Pagination) در لاراول کاربرد بسیاری دارند زیرا زمانی که ما اطلاعات و داده های زیادی داریم نمیتونیم اونا رو توی یک صفحه نمایش بدیم زیرا ظاهری بدی به خودشون نشون میدن و حتی ممکنه حجم عظیمی از داده ها رو توی یک صفحه به ما نمایش بده پس بهتره اونا رو صفحه بندی کنیم و هر تعداد از داده ها در یک صفحه جدا و مجزا نمایش بدیم.

ما به دو روش این کار رو انجام خواهیم داد.

روش اول از طریق Query Builder

خب کار رو با یک مثال ساده شروع می کنیم.

در مثال پایین ما اومدیم از طریق Query Builder یک سری از داده ها رو از دیتابیس فراخوانی میکنیم و بعد با استفاده از دستور Paginate تعداد داده ای که در هر صفحه قراره نمایش بدیم رو مشخص می کنیم. مثلا ما گفتیم در هر صفحه 15 تا داده رو به ما نمایش بده شما می تونید هر تعداد داده ای که میخواهید در هر صفحه نمایش بده رو مشخص کنید.

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;

class StudentController extends Controller
{
    public function index()
   {
       $student = DB::table('students')->paginate(15);
  
       return view('student.index', ['student' => $student]);
   }
}

حال اگر میخواین صفحه بندی شما طوری باشد که به صورت دو دکمه Next و Previous باشد کافیه به جای دستور paginate از دستور simplePaginate استفاده کنید.

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;

class StudentController extends Controller
{
    public function index()
   {
       $student = DB::table('students')->simplePaginate(15);
  
       return view('student.index', ['student' => $student]);
   }
}
روش دوم از طریق Eloquent
<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;

class StudentController extends Controller
{
    public function index()
   {
       $student = Student::paginate(15);
  
       return view('student.index', ['student' => $student]);
   }
}

حال زمانی که میخواید از Paginate در دستورات شرطی مانند where استفاده کنید به مثال زیر توجه کنید:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;

class StudentController extends Controller
{
    public function index()
   {
       $student = Student::where('age', '>', 20)->paginate(15);
  
       return view('student.index', ['student' => $student]);
   }
}

 

و همچنین می توانید از متد simplePaginate در روش Eloquent استفاده کنید:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;

class StudentController extends Controller
{
    public function index()
   {
       $student = Student::where('age', '>', 20)->simplePaginate(15);
  
       return view('student.index', ['student' => $student]);
   }
}
ایجاد Routes

برای ایجاد یک روت کافیه فایل web.php رو باز کنید و مطابق دستور زیر یک روت ایجاد کنید:

Route::get('/students', [StudentController::class, 'index'])->name('student.index');

 

نمایش در View

خب در پوشه view ها یک پوشه با نام student و در این پوشه یک فایل با نام index.blade.php میسازیم. بعد از ساخت فایل blade کافیه کدهای زیر رو کپی کنید:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>students</title>
</head>
<body>
    <div class="container">
        <table>
        <th>
            <td>Name</td>
            <td>Email</td>
            <td>Age</td>
        </th>
        @foreach ($student as $item)
            <th>
                <td>{{ $item->name }}</td>
                <td>{{ $item->email }}</td>
                <td>{{ $item->age }}</td>
            </th>
        @endforeach
        </table>
    </div>
    {!! $student->links() !!}
</body>
</html>

خب حالا نوبت اجرای فایل رسیده که کافیه فقط دستور php artisan serve  رو در ترمینال مسیر اصلی پروژه وارد کنید تا پروژه لاراولی شما آماده اجرا بشه و بعد از اجرا localhost:8000/students رو در مرورگر وارد کنید تا نتیجه کار رو ببینید.

امیدوارم که این پست آموزشی برای شما دوستان عزیز مفید بوده باشه.

موفق باشید.

نویسنده مطلب

سید جلال اسماعیل زاده

0/5
9 مطلب
0 دیدگاه
0 دانشجو
مشاهده بیشتر

یک نظر بنویسید