سلام دوستان من میخام کد تخفیف رو بصورتی داشته باشم که بتونم به یک یا چند کاربر مشخص و یا یک یا چند محصول و همچنین یک یا چند دسته بندی تخفیف در نظر بگیریم حالا سوالم اینه کدوم ساختار مناسب تره ساختار چند به چند مناسب کارمه یا پولی مورفیک از این دو ساختار کدومش مناسب تره و ساختار بهتری شما در نظر دارید؟
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');
});
}
رابطه چند به چند پالی مورفیک برای اینکار مناسبه
https://laravel.com/docs/8.x/eloquent-relationships#many-to-many-polymorphic-relations
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟