اسماعيل صدوقي نشر 25 يناير 2021 أرسل تقرير نشر 25 يناير 2021 السلام عليكم, احاول بناء موقع لبيع بطاقات الهدايا متنوعة(جوجل,ايتونز.امازون...) ,باطار العمل لارافيل كأول مشروع لي. هل هذه هي الطريقة الصحيحة , ام يوجد طريقة اسهل لربط الاكواد بمنتج (بطاقة) حيث سيملك كل منتج العديد من الاكواد؟ اقتباس
0 سمير عبود نشر 25 يناير 2021 أرسل تقرير نشر 25 يناير 2021 مرحباً إسماعيل، إذا كان لكل مُنتج عدة أكواد فالعلاقة التي تربط المنتج بالكود هي واحد لمُتعدد (hasMany) و بما أن كل كود ينتمي لمُنتج واحد فالعلاقة في النموذج (Code) ستكون (belongsTo): لم أفهم ماذا يعني الحقل number_of_products وهل في الموقع الخاص بك المُستخدم سيشتري الأكواد أم ماذا؟ أي أن نتيجة عملية الشراء سيتحصل عل أحد أكواد المنتج ؟ إذا كان المُستخدم سيحصل في الأخير على كود من هذه الأكواد فأقترح إضافة حقل جديد purchased_at لجدول codes: $table->datetime('purchased_at')->nullable(); لتخزين وقت الشراء. و يُمكن أيضاً إضافة حقل user_id لتخزين مُعرف المُستخدم الذي قام بشراء الكود و جعله null إفتراضياً. العلاقات ستكون بهذا الشكل: النموذج Product: <?php class Product extends Model{ // ... public function codes() { return $this->hasMany(Code::class); } public function purchasedCodes() { return $this->hasMany(Code::class)->whereNotNull('purchased_at'); } } أما النموذج Code: <?php class Code extends Model { // ... public function product() { return $this->belongsTo(Product::class); } public function purchased_by() { return $this->belongsTo(User::class, 'user_id'); } } يُمكن أيضاً إضافة جدول و نموذج آخر للمشتريات (purchases) و تربط النموذج Purchase بكل من النموذج User و Code: <?php class Purchase extends Model { // ... public function user() { return $this->belongsTo(User::class, 'user_id'); } public function code() { return $this->belongsTo(Code::class, 'code_id'); } } بالتوفيق. 1 اقتباس
السؤال
اسماعيل صدوقي
السلام عليكم,
احاول بناء موقع لبيع بطاقات الهدايا متنوعة(جوجل,ايتونز.امازون...) ,باطار العمل لارافيل كأول مشروع لي.
هل هذه هي الطريقة الصحيحة , ام يوجد طريقة اسهل لربط الاكواد بمنتج (بطاقة) حيث سيملك كل منتج العديد من الاكواد؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.