description

دسته بندی و زیر دسته بندی

- 3 هفته پیش
مهدی ساسانی ( 128 تجربه )
3 هفته پیش

خیلی درگیر این کار بودم و بلأخره خودم تونستم با یه کم درگیری انجامش بدم.
با این کار می‌تونید زیر دسته بندی‌ها و دسته بندی‌ها رو به خوبی مرتب کنید.

ساخت مدل و جدول مربوط به دسته بندی

php artisan make:model Category -m

وارد کردن ستون parent_id در جدول categories

وارد فایل create_categories_table بشین و کد زیر رو قرار بدید اطلاعات مورد نیاز خودتون هم قرار بدید.

$table->unsignedInteger('parent_id')->nullable()->default(null);

تعریف ارتباط بین دسته بندی و زیر دسته بندی‌ها

قطعه کد زیر رو داخل مدل Category قرار بدید؛ این کد مشخص می‌کنه که هر دسته بندی ممکنه به یک دسته بندی والد (parent) وابستگی داشته باشه.

public function parent() {
    return $this->belongsTo(Category::class);
}

درخواست اطلاعات از کنترلر

داخل کنترلر CategoryController و تابع index دستورات زیر رو قرار بدید.

public function index()
    {
        // درخواست تمام دسته بندی‌های والد از دیتابیس
        $categories = Category::with('parent')->whereNull('parent_id')->get();
        // درخواست تمام زیر دسته بندی‌ها از دیتابیس
        $subcategories = Category::with('parent')->whereNotNull('parent_id')->get();
        // هدایت هر دو متغیر به یک ویوو
        return view('category', compact('categories', 'subcategories'));
    }

استفاده از مقادیر در فایل blade

خب، حالا که وارد فایل blade شدید، با دستورات زیر خیلی ساده می‌تونید هر کدوم از دسته بندی‌ها رو مشخص کنید.

@foreach($categories as $category)
    <h2>{{ $category->title }}</h2>
    @foreach($subcategories as $subcategory)
        if($subcategory->parent_id == $category->id)
            <h3>{{ $subcategory->title }}</h3>
        @endif
    @endforeach
@endforeach

با کد بالا، ما مشخص کردیم تمام زیر دسته بندی‌هایی که فیلد parent_id اونا با فیلد id دسته بندی‌های والد یکسان بود، زیر اونا نشون داده بشن.
امیدوارم استفاده کنید. موفق باشید

برای ارسال پاسخ باید وارد سایت شوید