• 0

كيف يمكن إسناد أكثر من relationships لجدولين في Laravel

السلام عليكم 

أقوم ببناء موقع بواسطة Laravel 5.6 يقوم بإدارة الأفلام بحيث أن المستخدم يمكن له ان يقوم بإضافة أفلام الى قائمة "المشاهدة لاحقا" و أيضا إضافتها الى قائمة الافلام التي أعجبته.

قمة بعمل جدول users و movies في قاعدة البيانات بالإضافة الى جدول الخاص بقائمة المشاهدة لاحقا و أسميته 'warches' و الذي يقوم بربط المستخدم بالافلام التي وضعها في القائمة

بعدها قمت بإضافة دالة اسمها movies في مودل User

// User Model
public function movies(){
	return $this->belongsToMany('App\Movie', 'watches');
}

و داله إسمها users في مودل Movie

// Movie Model
public function users(){
	return $this->belongsToMany('App\User', 'watches');
}

العلاقة هي belongsToMany لان المستخدم يمكن ان يعمل إعجاب لعدد كثير من الافلام و كذلك الافلام يمكن ان يعجب بها عدد كبير من المستخدمين

بالنسبة لي الاعجاب فقد أنشأت جدول في قاعدة البيانات مثل جدول watches أسميته favorites (أفترض ان العلاقة ستكون هي الاخرى belongsToMany) بالنسبة للادخال و المسح فهي تعمل بشكل جيد و كذلك قائمة المشاهدة لاحقا, ولكن المشكل بالنسبة لي هو كيف أضيف علاقة تربط بين المستخدم و الافلام التي تعجبه ,بحيت يعطيني قائمة الافلام التي يعمل لها إعجاب.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

السلام عليكم
الأمر بسيط تماماً

بداية بالنسبة لي فأنا أتبع طريقة تساعد على التعامل مع العلاقة من النوع الذي تريده بشكل أفضل وذلك بتسمية العلاقة باسم يعبر عنها. أنت استخدمت movies كاسم للعلاقة مع أن لديك علاقتين مختلفتين تربط مابين المستخدم والأفلام وهذا ماسبب لك الارتباك
بالنسبة للعلاقة بين المستخدم والأفلام هناك علاقتين : أفلام أشاهدها لاحقاً و أفلام تعجبني

 

// User Model -> movies to watch later
public function watchLaterMovies(){
	return $this->belongsToMany('App\Movie', 'watches');
}

// User Model -> favorites movies
public function favoriteMovies(){
	return $this->belongsToMany('App\Movie', 'favorites');
}

 

في العلاقة الأولى يتم جلب الأفلام من جدول الأفلام  عبر الجدول الوسيط watches
بينما في العلاقة الثانية يتم جلب الأفلام من جدول الأفلام عبر الجدول الوسيط favorites

تمّ تعديل بواسطة Nael Saeed
إضافة مزيد من التوضيح عن سبب طرحي لفكرة تغيير تسمية العلاقة

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن