رفتن به مطلب
انجمن پشتیبانی لاراول ایران
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

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

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

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

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

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

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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


×
×
  • جدید...