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

7 ماه پیش توسط moradiyan آپدیت شد
آفلاین
user-avatar
مهدی ساسانی ( 783 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

4

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

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

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 دسته بندی‌های والد یکسان بود، زیر اونا نشون داده بشن.
امیدوارم استفاده کنید. موفق باشید

آفلاین
user-avatar
محمد سوری ( 70 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

با سلام
سئوالی داشتم در مورد دسته بندی ها :
من استایل های متفاوتی رو برای حالت های مختلف دسته بندی و زیر دسته ها ایجاد کردم که اگر دسته بندی اصلی بود یک استاب رو در صفحه ایندکس دسته بندی نمایش بده، اگر زیر دسته ای بود که زیر مجموعه داشت به یک شکل و اگر زیر دسته بود به شکل دیگری،اما برای اینکه نام دسته والد رو روبروی دسته بندی ها نمایش بدم مشکل دارم و تنها می تونم ای دی دسته والد رو نمایش بدم.چطوری می تونم نام دسته والد رو نمایش بدم در کنار زیر دسته ها ؟
http://uupload.ir/files/jze_2019-02-14.png
نمونه کد:


                             <td>{{$category->title}}</td>

                                                        @if($category->parent_id ==0)
                                                        <td style="text-align: center;"><span class="m-badge  m-badge--primary m-badge--wide" >دسته بندی اصلی</span>
                                                        @elseif(count($category->childrenRecursive) > 0)
                                                            <td style="text-align: center;">
                                                                <span class="m-badge  m-badge--success m-badge--wide" >زیر دسته اصلی{{$category->parent_id}}</span>
                                                            @else
                                                            <td style="text-align: center;"><span class="m-badge  m-badge--danger m-badge--wide" >زیر دسته( {{$category->parent_id}})</span>
                                                        @endif```
آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

2

@aqamati
به صورت بهینه میشه چیزی به صورت زیر
مدل

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
   protected $fillable = ['name'];

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

   public function children()
   {
       return $this->hasMany(Category::class, 'parent_id');
   }
}

کنترلر

   public function index()
   {
       $categories = Category::with('children')->whereNull('parent_id')->get();
       return view('categories.index', compact('categories'));
   }

view

@each('partials._category', $categories, 'category', 'partials._empty-categories')

sub-view

<li>{{ $category->name }}</li>
@if ($category->children->count() > 0)
   <ul>
       @foreach($category->children as $child)
           @include('partials._category', ['category' => $child])
       @endforeach
   </ul>
@endif 
آفلاین
user-avatar
مصطفی ( 12300 تجربه )
3 سال پیش
تخصص : برنامه نویس

لینک کوتاه اشتراک گذاری

0

@aqamati
@Arshavir

برای آپدیت کتگوری مثلا یه پست تو مدیریت باید چیکار کرد؟

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

0

@mostafanori
واضح تر توضیج بدید
میخواهید فقط دسته رو آپ کنید یا پست رو

آفلاین
user-avatar
مصطفی ( 12300 تجربه )
3 سال پیش
تخصص : برنامه نویس

لینک کوتاه اشتراک گذاری

1

@Arshavir
کلا با این روشی که دوستمون گفت ، ما الان باید یه بخش هم تو مدیریت داشته باشیم برای مدیریت دسته ها که بتونیم حذف یا اضافه کنیم و یا والد یا فرزند دسته ای رو عوض کنیم

از اونورم همین نمودار درختی دسته ها رو باید در هنگام ایجاد و ویرایش پست داشته باشیم که هم ایجاد بشه و یا بروزرسانی بشه

آفلاین
user-avatar
رضا ( 4515 تجربه )
3 سال پیش
تخصص : Laravel Developer

لینک کوتاه اشتراک گذاری

0

سلام دوستان
من میخواهم بدونم چطوری باید دسته بندی ها و زیر دسته بندی ها رو ذخیره (store) و ویرایش(update) کنم ؟ نمیدونم چطوری باید این دوتا متد در کتگوری کنترل بنویسمش!!! ممنون میشم کمکم کنید و کدتونو به اشتراک بزارید...
@mostafanori
@Arshavir
@aqamati

آفلاین
user-avatar
مصطفی ( 12300 تجربه )
3 سال پیش
تخصص : برنامه نویس

لینک کوتاه اشتراک گذاری

1

@Megairan
سلام
من از این لینک استفاده کردم . تو این آموزش ایجاد دسته بندی تا ۳ فرزند رو (اگر اشتباه نکنم ) گفته . مشکلی داشتی بپرس بهت بگم .
آموزش دسته بندی داینامیک در لاراول

آفلاین
user-avatar
Vahid Ashourzadeh ( 190 تجربه )
2 سال پیش

لینک کوتاه اشتراک گذاری

0

سلام یه سوال داشتم در مورد دسته بندی، فرض میکنیم کاملا دسته بندیمونو ایجاد کردیم و بعنوان مثال یه دسته ایی بصورت، (موبایل، --اندروید، ---سامسونگ) داریم که دقیقا سه سطح هستن، ولی وقتی میخام یه محصولی اضافه کنم اونجایی که لیست دسته بندیامو نشون میدم دقیقا باید بگم که این محصول برای دسته ی سامسونگه، یا برای همه ی دسته های بالاترشم یه محصولیو میتونم تعریف کنم، این قسمتو اگه ینفر برام باز کنه ممنون میشم، چون من تا حالا تو یه وبسایت مدیریت محتوا انجام ندادم..

آفلاین
user-avatar
moradiyan ( 70 تجربه )
2 سال پیش

لینک کوتاه اشتراک گذاری

0

دمتون گرم.

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.