رفتن به مطلب
انجمن پشتیبانی لاراول ایران

هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست

irankhosravi

شمارش کل محصولات از گروه ریشه والدین

Recommended Posts

زمانی که یک محصول درون سیستم ثبت میشود،‌باید لیست دسته بندیهای آن محصول دریافت شود و یک واحد به فیلد count اضافه شود.

فرض بر اینکه دسته بندی های ما به شرح زیر باشد:

۱- الکترونیک
۲ - موبایل، تبلیت و اقلام جانبی
۳- لوازم جانبی موبایل و تبلت
۴ - موبایل
۵ - تبلت
۶ - کامپیوتر و لپ تاپ
۷ - لپ تاپ و لوازم جانبی
۸ - لوازم جانبی لپ تاپ
۹ - لپ تاپ

صورت مسئله:

در صورتی که یک محصول در دسته بندی لپ تاپ ( شماره ۹ ) قرار داده شود ( با فرض اینکه محصول تازه ثبت شده است ) ، در فیلد count دسته بندی های زیر باید یک واحد اضافه گردد:

لپ تاپ
لپ تاپ و لوازم خانگی
کامپیوتر و لپ تاپ
الکترونیک
در این حالت فیلد count تمام دسته بندی های بالا باید به ۱ تغییر کنند

صورت مسئله ۲ :

در صورتی که یک محصول در دسته بندی لوازم جانبی لپ تاپ ( شماره ۸ ) قرار داده شود ( با فرض اینکه محصول تازه ثبت شده است ) ، در فیلد count دسته بندی های زیر باید یک واحد اضافه شوند

لوازم جانبی لپ تاپ
لپ تاپ و لوازم خانگی
کامپیوتر و لپ تاپ
الکترونیک

نکته:

در صورت حذف و یا غیرفعال شدن یک محصول، باید تمام دسته بندی هایی که این محصول در آن دخیل است، یک واحد کم شوند.

    public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->foreignId('parentId')->nullable()->constrained('categories')->cascadeOnDelete();
            $table->unsignedBigInteger('guildId')->nullable();
            $table->string('title');
            $table->bigInteger('count')->default(0);
            $table->string('type')->default('product')->index();
            $table->string('slug')->unique();
            $table->text('description')->nullable();
            $table->text('full_description')->nullable();
            $table->unsignedBigInteger('sort_order')->nullable();
            $table->foreignId('thumbnailId')->nullable()->constrained('files')->nullOnDelete();
            $table->enum('status', ['disabled', 'enabled'])->default('enabled');
            $table->timestamps();
        });
    }

Category.php

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

    public function parents()
    {
        return $this->belongsTo(Category::class, 'parentId')->with('parents');
    }

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

    public function products()
    {
        return $this->hasMany(Product::class, 'rootCategoryId');
    }

    public function allProducts()
    {
        return $this->belongsToMany(Product::class, 'category_product', 'categoryId', 'productId');
    }

Product.php

class Product extends Model
{
    public function category()
    {
        return $this->belongsTo(Category::class); // products table has the category_id column
    }
}

خلاصه اگر بخوام بگم این شکلی میشه

مجموع محصولات یک دسته بندی = مجموع محصولات دسته و تمام زیر دسته های همون دسته بندی

Share this post


Link to post
Share on other sites

وارد این گفتگو شوید

میتوانید پیام خود را ارسال کنید و بعد ثبت نام نمایید. در صورتی که حساب کاربری دارید, هم اکنون وارد شوید و در این گفتگو شرکت کنید.

مهمان
پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  Only 75 emoji are allowed.

×   لینک شما به صورت اتوماتیک جایگذاری شد.   نمایش به عنوان یک لینک به جای

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • جدید...