محمود خسروی
3 سال پیش توسط محمود خسروی مطرح شد
1 پاسخ

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

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

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

1- الکترونیک
2 - موبایل، تبلیت و اقلام جانبی
3- لوازم جانبی موبایل و تبلت
4 - موبایل
5 - تبلت
6 - کامپیوتر و لپ تاپ
7 - لپ تاپ و لوازم جانبی
8 - لوازم جانبی لپ تاپ
9 - لپ تاپ

صورت مسئله:

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

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

صورت مسئله 2 :

در صورتی که یک محصول در دسته بندی لوازم جانبی لپ تاپ ( شماره 8 ) قرار داده شود ( با فرض اینکه محصول تازه ثبت شده است ) ، در فیلد 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
    }
}

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

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


ثبت پرسش جدید
رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
-1

سلام من سوال اول رو جواب میدم

توی لاراول اگر از تابع hasmany استفاده کنی بهت میگه این محصول چندتا دسته بندی داره ( فقط تعداد نیست‌ ) از این تابع برای بدست اوردن محصولات یک دسته بندی بیشتر استفاده میشه.
اگر belongsTo رو استفاده کنی میگه این محصول از چندتا دسته بندی استفاده میکنه ( دقیقا کار تابع بالا ولی برعکس)
درضمن توضیحات برای روابط دیتابیس هستند


من رفتم پایین تر دیدم کلا یک سوال هست ولی ویرایش نکردم جوابم رو اینجوری واقعی تر بنظر میاد.😅


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام