استخدام Pagination في Laravel لاستعلامات قاعدة البيانات

Amine
30/08/2024

المقدمة

الترقيم (Pagination) هو عملية تقسيم مجموعة من البيانات إلى صفحات صغيرة، مما يسهل عرضها وإدارتها، ويجعل تجربة المستخدم أكثر سلاسة عند التعامل مع كميات كبيرة من البيانات. يوفر Laravel ميزة الترقيم بشكل مدمج وسهل الاستخدام، تتيح لك تطبيق الترقيم على استعلامات قاعدة البيانات بسرعة وكفاءة. يعد الترقيم مهمًا بشكل خاص عندما يكون لديك كميات كبيرة من البيانات التي تحتاج إلى عرضها للمستخدمين بطريقة منظمة ودون تحميل الصفحة بالكامل دفعة واحدة. في هذا الدليل، سنتعرف على كيفية استخدام Laravel Pagination مع استعلامات قاعدة البيانات بطريقة مفصلة.

الخطوة 1: إعداد بيئة العمل

تأكد من أن لديك مشروع Laravel جاهز للعمل. إذا لم يكن لديك مشروع موجود، يمكنك إنشاء مشروع جديد باستخدام Composer. Laravel يأتي مع العديد من الأدوات المفيدة المدمجة مثل الترقيم، والتي يمكن تفعيلها بسهولة في مشاريعك:

composer create-project --prefer-dist laravel/laravel laravel-pagination

بعد تثبيت Laravel، انتقل إلى مجلد المشروع:

cd laravel-pagination

في هذه المرحلة، لديك بيئة Laravel الأساسية جاهزة. تأكد من إعداد الاتصال بقاعدة البيانات قبل المتابعة.

الخطوة 2: إعداد قاعدة البيانات وإنشاء نموذج ومهيئات

قبل تطبيق الترقيم، نحتاج إلى إعداد قاعدة البيانات وإنشاء نموذج ومهيئات (Seeders) لتوليد بعض البيانات. أولاً، قم بإعداد اتصال قاعدة البيانات في ملف .env الخاص بمشروعك:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_username
DB_PASSWORD=your_database_password

تأكد من أن بيانات الاتصال بقاعدة البيانات صحيحة، وتذكر إنشاء قاعدة البيانات يدويًا إن لم تكن موجودة بالفعل.

ثم، أنشئ نموذج وترحيل (Migration) جديد باستخدام الأمر التالي:

php artisan make:model Product -m

سيقوم هذا الأمر بإنشاء نموذج Product وترحيل (Migration) جديد في مجلد database/migrations. افتح ملف الترحيل وقم بتعريف هيكل الجدول:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration
{
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->decimal('price', 8, 2);
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('products');
    }
}

قم بتشغيل الترحيلات لإنشاء الجدول في قاعدة البيانات:

php artisan migrate

يجب أن تتأكد من أن الجدول قد تم إنشاؤه بنجاح في قاعدة البيانات. يمكنك التحقق من ذلك باستخدام أدوات إدارة قواعد البيانات مثل phpMyAdmin أو MySQL Workbench.

لإنشاء بيانات تجريبية، استخدم الأمر التالي لإنشاء مهيئ (Seeder):

php artisan make:seeder ProductSeeder

افتح ملف ProductSeeder.php وقم بإضافة البيانات التجريبية:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Product;

class ProductSeeder extends Seeder
{
    public function run()
    {
        Product::factory()->count(50)->create();
    }
}

إذا لم تكن قد أنشأت مصنع (Factory) للنموذج، استخدم الأمر التالي لإنشاءه:

php artisan make:factory ProductFactory --model=Product

ثم قم بتحديد الحقول التي سيتم ملؤها بشكل تلقائي في المصنع:

<?php

namespace Database\Factories;

use App\Models\Product;
use Illuminate\Database\Eloquent\Factories\Factory;

class ProductFactory extends Factory
{
    protected $model = Product::class;

    public function definition()
    {
        return [
            'name' => $this->faker->word,
            'price' => $this->faker->randomFloat(2, 1, 100),
        ];
    }
}

الآن، قم بتشغيل المهيئات لتوليد البيانات:

php artisan db:seed --class=ProductSeeder

الخطوة 3: استخدام الترقيم في استعلامات قاعدة البيانات

الآن، دعنا نطبق الترقيم على استعلام قاعدة البيانات. افتح ملف web.php في مجلد routes وقم بإضافة الكود التالي:

use App\Models\Product;
use Illuminate\Support\Facades\Route;

Route::get('/products', function () {
    $products = Product::paginate(10);
    return view('products.index', compact('products'));
});

يستخدم هذا الكود طريقة paginate(10) لتجميع المنتجات في صفحات، كل منها تحتوي على 10 منتجات. سيتم تمرير مجموعة المنتجات المرقمة إلى قالب العرض.

الخطوة 4: إنشاء قالب العرض لعرض البيانات المرقمة

لنقم بإنشاء قالب عرض لعرض المنتجات المرقمة. انتقل إلى مجلد resources/views وأنشئ مجلد جديد باسم products، ثم أنشئ ملف جديد باسم index.blade.php داخل هذا المجلد. أضف الكود التالي إلى القالب:

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>قائمة المنتجات</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <h1>قائمة المنتجات</h1>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>الاسم</th>
                    <th>السعر</th>
                </tr>
            </thead>
            <tbody>
                @foreach ($products as $product)
                    <tr>
                        <td>{{ $product->id }}</td>
                        <td>{{ $product->name }}</td>
                        <td>{{ $product->price }}</td>
                    </tr>
                @endforeach
            </tbody>
        </table>

        <div class="d-flex justify-content-center">
            {{ $products->links() }}
        </div>
    </div>
</body>
</html>

يستخدم هذا القالب Bootstrap لتنسيق الجدول وعرض البيانات. يتم استخدام التوجيه {{ $products->links() }} لإنشاء روابط الترقيم للصفحات، مما يتيح للمستخدمين التنقل بين الصفحات بسهولة.

الخطوة 5: تخصيص واجهة الترقيم

يمكنك تخصيص واجهة الترقيم لتناسب تصميم تطبيقك بشكل أفضل. يوفر Laravel خيارات لتخصيص HTML لروابط الترقيم باستخدام القوالب المخصصة. على سبيل المثال، يمكنك نسخ ملف pagination.blade.php إلى مجلد resources/views/vendor/pagination وتعديله لتغيير تنسيق الروابط.

للحصول على نمط Bootstrap الافتراضي للترقيم، يمكنك تضمين التوجيه التالي في ملف AppServiceProvider.php:

use Illuminate\Pagination\Paginator;

public function boot()
{
    Paginator::useBootstrap();
}

سيؤدي هذا إلى استخدام تنسيق Bootstrap للترقيم بشكل افتراضي، مما يجعل روابط الترقيم تتناسق مع تصميم Bootstrap إذا كنت تستخدمه في موقعك.

إذا كنت ترغب في تخصيص الروابط بشكل أكبر، يمكنك إنشاء ملف الترقيم الخاص بك وتنسيقه بأي طريقة تريدها. يمكنك نسخ قالب الترقيم الافتراضي من Laravel وتعديله وفقًا لاحتياجاتك.

الخاتمة

يوفر Laravel أدوات قوية ومرنة لتطبيق الترقيم على استعلامات قاعدة البيانات، مما يسهل عرض البيانات بطريقة منظمة وسهلة التصفح. باستخدام الترقيم، يمكنك تحسين تجربة المستخدم وتقليل وقت تحميل الصفحة بشكل كبير. تتيح لك Laravel أيضًا تخصيص واجهة الترقيم بما يتناسب مع تصميم تطبيقك. استمر في استكشاف ميزات Laravel لتعزيز وظائف تطبيقك وتحسين الأداء.

التعليقات

اترك تعليقاً