سلام دوستان من برای سایتم میخام سیستم تخفیف پیاده سازی کنم به این شکل که من میتونم به دسته بندی خاص یا کاربر یا محصول کد تخفیف در نظر بگیرم یعنی کد تخفیف رو سه مدل اعمال میتونه بشه برای این موضوع از این ساختار استفاده کردم بنظرتون ساختارش اوکیه ؟
Schema::create('coupons', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('code')->unique();
$table->integer('percent');
$table->bigInteger('limit');
$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('couponables', function (Blueprint $table) {
$table->foreignId('coupon_id')->constrained('coupons')->cascadeOnDelete();
$table->integer('couponable_id');
$table->string('couponable_type');
});
این نمونه که شما گفتید رابطه یک به چند Polymorphic هستش
من بودم اینجوری طراحیش میکردم.
یه table کد تخفیف ایجاد میکردم و علاوه بر ستون های لازم 3 ستون personId و productId و categoryId به عنوان کلید خارجی بهش اضافه میکردم.حالا هرکدوم از این سه ستون اگه مقدار داشت برای اون آیدی و اون دسته هستش. و داخل مدل کد تخفیف به جای morphTo از belongTo استفاده میکردم.
البته روش های اصولی تر دیگه ای هم میشه این کارو کرد.مثل مثال خودتون که یه جدول میانه ایجاد کردید. و تو ستون type احتمالا نوع id رو وارد میکنید ولی خب تجربه ای که من داشتم تو این مورد همون طراحی اولی که گفتم بر من بهتر بود. بستگی به نوع استفاده شما هم داره.
@bahmanroocket
ممنون از توضیحاتت من برا اینکه تعداد جداولم کم شه و چون کد تخفیف با سه تا مدل سر و کار داره ترجیح دادم با یه جدول بصورف مورف پیادش کنم من الان بک اندش هم درست کردم برای قسمت فرانت که کد تخفیف رو تو سبد اعمال کنم و منقضی شدن و این چیزاش مشکل دارم برا این بخش اموززش یا نمونه کدی ندارید ؟
قسمت اعمالش فکر نکنم چالش خاصی داشته باشه. شماکه تا اینجای برنامرو نوشتید و منطقش رو درک کردید احتمالا نباید تو ادامش مشکلی داشته باشید و فقط باید کدش رو بزنید.
ولی خب جریان کار میتونه این جوری باشه که شما محصولاتتون رو با افزودن به جدول سبد خرید تخفیف رو هم اعمال میکنه. میتونید مثلا تو سبد خرید دو ستون قرار بدید به نام price و final price که price قیمت اولیه و final price قیمت نهایی محصول باشه. خب طبیعی هستش که اگر id محصول تو جدول تخفیف ها باشه میتونه درصد تخفیف رو بگیره و رو price اعمال کنه و در final price ثبت کنه. اینجوری میتونید تو سبد خرید اینکه چند درصد تخفیف دادید رو با محاسبه بین price و final price رو به مشتری هم نشون بدید.
و اینکه بعد از پرداخت سبد خرید میتونید تو جدول تخفیف ها مقدار ستون used رو true کنید که به معنی استفاده کردن کد تخفیف باشه.
باز هم بستگی داره که چه سیستمی رو بخوایید پیاده سازی کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟