راکت
حل شده

ساختار دیتابیس کد تخفیف در لاراول

1 پاسخ

سلام دوستان من میخام کد تخفیف رو بصورتی داشته باشم که بتونم به یک یا چند کاربر مشخص و یا یک یا چند محصول و همچنین یک یا چند دسته بندی تخفیف در نظر بگیریم حالا سوالم اینه کدوم ساختار مناسب تره ساختار چند به چند مناسب کارمه یا پولی مورفیک از این دو ساختار کدومش مناسب تره و ساختار بهتری شما در نظر دارید؟

        Schema::create('coupons', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('code')->unique();
            $table->integer('amount');
            $table->boolean('is_general')->default(0);
            $table->unsignedInteger('quantity')->nullable();
            $table->enum('type'  , ['fixed' , 'percent']);
            $table->enum('status'  , ['enable' , 'disable'])->default('disable');
            $table->text('description')->nullable();
            $table->unsignedInteger('couponable_id');
            $table->string('couponable_type');
            $table->dateTime('start_at');
            $table->dateTime('expired_at');
            $table->timestamps();
        });
    public function up()
    {
        Schema::create('coupons', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('code');
            $table->integer('amount');
            $table->boolean('is_general')->default(0);
            $table->unsignedInteger('quantity')->nullable();
            $table->enum('type'  , ['fixed' , 'percent']);
            $table->enum('status'  , ['enable' , 'disable'])->default('disable');
            $table->text('description')->nullable();
            $table->dateTime('start_at');
            $table->dateTime('expired_at');
            $table->timestamps();
        });

        Schema::create('coupon_user', function (Blueprint $table) {
            $table->unsignedBigInteger('coupon_id');
            $table->unsignedBigInteger('user_id');

            $table->foreign('coupon_id')->references('id')->on('coupons')->onDelete('CASCADE');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('CASCADE');
        });

        Schema::create('category_coupon', function (Blueprint $table) {
            $table->unsignedBigInteger('category_id');
            $table->unsignedBigInteger('coupon_id');

            $table->foreign('category_id')->references('id')->on('categories')->onDelete('CASCADE');
            $table->foreign('coupon_id')->references('id')->on('coupons')->onDelete('CASCADE');
        });

        Schema::create('coupon_course', function (Blueprint $table) {
            $table->unsignedBigInteger('coupon_id');
            $table->unsignedBigInteger('course_id');

            $table->foreign('coupon_id')->references('id')->on('coupons')->onDelete('CASCADE');
            $table->foreign('course_id')->references('id')->on('courses')->onDelete('CASCADE');
        });
    }

@hesammousavi
@ali.bayat
@mhyeganeh
@khanzadimahdi

ثبت پرسش جدید

پاسخ‌ها

1
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

رابطه چند به چند پالی مورفیک برای اینکار مناسبه

https://laravel.com/docs/8.x/eloquent-relationships#many-to-many-polymorphic-relations

شاید پاسخ شما همین‌جا باشد

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

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