اذهب إلى المحتوى
  • 0

كيف عمل علاقه many to many laravel

Hanan Fahad2

السؤال

Recommended Posts

  • 0

تستخدم هذه العلاقة للربط بين الجداول عندما يكون كل سجل في الجدول الأول يقابله أكثر من سجل في الجدول الثاني ويكون كل سجل في الجدول الثاني يقابله أكثر من سجل في الجدول الأول. فيتم إنشاء جدول ليكون وسيط بين هذين الجدولين.

يمكن عمل هذه العلاقة فمثلاً إذا كان لديكي أكثر من جدول فليكن مثل 

posts
	id
	name
roles 
	id 
	name
roles_user 
	user_id
	role_id

وملف model الخاص posts هو 

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}

بمجرد تحديد العلاقة, يمكنك الوصول إلى أدوار المستخدم باستخدام خاصية العلاقة الديناميكية للأدوار:

use App\Models\User;
$user = User::find(1);
foreach ($user->roles as $role){
	//هنا تكتب النتائج الذي تود طباعتها
}

يمكنك القراءة أكثر من هنا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لتعريف علاقة many to many نحتاج الى 3 جداول, لنفترض أنه لدينا الجدوال الآتية users و roles و role_user, الجدول role_user يعرف بما يسمى جدول الكسر ويحتوي على الحقلين user_id و role_id
في الموذج user

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
   
   public function roles()
   {
       return $this->belongsToMany('App\Role');
   }
}

كما تلاحظي قمت بانشاء التابع roles الذي يعيد جميع الأدوار الخاصة بالمستخدم, يمكن استدعاء التابع roles كالآتي

$roles = App\User::find(1)->roles()->get();

في النموذج role أيضا

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
   
   public function users()
   {
       return $this->belongsToMany('App\User');
   }
}

يمكنك قراءة المزيد عن العلاقة من موسوعة حسوب , يمكنك الذهاب الى العلاقة مباشرة من هنا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 16 دقائق مضت قال hanan fahad11:

لوتصلح لي العلاقه بالملف وترسله اكون شاكرة لك لاني ماضبط معي 

 

لاحظي أن المشكلة هي في جدول products يوجد حقلين باسم id يجب إزالة أحدهم 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...