محمود موسى2 نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 السلام عليكم. اواجه مشكلة صعبة جدا في فهم العلاقات بلارافل. حاولت كثيرا وجاهدا ولم افهم اي شئ بها او افهمها ولكن لا اجيد توظيف ما تعلمته.. عندي حاليا جدول articles به title, body, category_id... الخ العامود category_id يحتوي على id الcategory الخاصة بالarticle. فكيف سأجلب إسم الcategory من جدول categories عن طريق قيمة ال category_id الموجودة بداخل صف المقالة.. اقتباس
0 سمير عبود نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 الأمر بسيط جداً فإذا نظرنا إليه بعيداً عن الكود فسنجد أن كل مقال ينتمي إلى قسم معين و من جهة معاكسة كل قسم يملك عدة مقالات و على هذا الأساس نقوم بإنشاء العلاقات ففي النموذج Category نضع: public function articles() { return $this->hasMany(Article::class); } و في الجهة المُعاكسة في النموذج Article: public function category() { return $this->belongsTo(Category::class); } بما أن حقل المفتاح الثانوي يتبع عُرف التسمية فلا داعي لتحديده كمعامل في تعريف العلاقة. الآن إذا كان لديك مثلاً مقال مُحدد و تريد الوصول إلى معلومات القسم الذي ينتمي له فالأمر بسيط جدًا ستقوم ب: $article = Article::find(1); $category = $article->category; $categoryName = $category->name; عندما نصل إلى العلاقة كخاصية فإننا نريد جلب السجل بكافة معلوماته. اقتباس
0 محمد أبو عواد نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 الأمر سهل لا تقلق ولكن يحتاج للمزيد من الجهد والمزيد من التدريبات لكي نفهم جيدا كيفية عمل العلاقات في لارافيل, لنحاول التفكير بشكل منطقي في المشكلة التي تواجهك, لدينا قسم أو category وهذا القسم يحتوي على العديد من المقالات, اذا بامكان القسم ان يمتلك أكثر من مقال, بينما المقالة لا يمكنها الانتماء الا لقسم واحد, اذا نوع العلاقة واحد إلى كثير One to Many, فبالتالي شكل العلاقات سيكون كالتالي في النموذج Category public function articles(){ return $this->hasMany(Article::class); } استخدمت التابع hasMany أي أن القسم يمتلك أكثر من مقالة في النموذج Article public function category(){ return $this->belongsTo(Category::class); } استخدمت التابع belongsTo أي أن المقالة تنتمي لقسم واحد الآن لو حاولنا الحصول على معلومات الالقسم الذي تنتمي اليه المقالة فسوف يكون كذلك return $category=Article::find(1)->category()->get(); الآن هذا السطر سوف يقوم بارجاع بيانات القسم الذي تنتمي اليه المقالة, ويمكننا الوصول لاسم القسم بكل سهولة من خلال السطر التالي return $category[0]->name; سوف يتم استرجاع اسم القسم يمكنك قراءة المزيد عن العلاقات من هنا اقتباس
السؤال
محمود موسى2
السلام عليكم.
اواجه مشكلة صعبة جدا في فهم العلاقات بلارافل. حاولت كثيرا وجاهدا ولم افهم اي شئ بها او افهمها ولكن لا اجيد توظيف ما تعلمته..
عندي حاليا جدول articles به title, body, category_id... الخ
العامود category_id يحتوي على id الcategory الخاصة بالarticle.
فكيف سأجلب إسم الcategory من جدول categories عن طريق قيمة ال category_id الموجودة بداخل صف المقالة..
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.