🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۰ Mahdi
relation permission
جامعه لاراول ایجاد شده در ۰۲ فروردین ۱۴۰۲

سلام

سال جدید به تیم 7learn تبریک میگم با ارزوی بهترین‌ها برای شما

سوالی ک برای من اینجا پیش اومد در مورد پیاده سازی relation مون هست

ما اومدیم امکانی رو ایجاد کردیم ک به کاربرهای دلخواه مون دسترسی‌ها مختلف بدیم

پس هر کاربر ی سری دسترسی‌ها داره و این یعنی باید از HasMany استفاده کنیم

ن belongsTo ک در این صورت هم attach , sync و syncWhithOutDetaching پیاده سازی نمیشن

خواستم بدونم کجای تعریف من اشتباه ک بجای belongs to به has many رسیدم

سلام مهدی عزیز

شما تعریف رو برای خودت بطور درست انجام ندادی.

اینطور باید تعریف کنی:

ما یکسری کاربر داریم که نقش هم دارند.

به هر کاربر چندین نقش تعلق داره و هر نقش هم میتونه برای چند کاربر باشه.

پس رابطه بین نقش و کاربر many to many هست.

و در مدل یوزر ما باید belong رو استفاده کنیم و در مدل رول باید hasmany رو استفاده کنیم.

احمدرضا فاطمی کیا ۰۲ فروردین ۱۴۰۲، ۱۳:۰۹

بله رابطه چند به چند میدونم

میدونم هر rule چندین تا user داره و بلعکس

ولی این نقش‌ها هستند ک عضو کاربر‌های ما هستند

ن کاربر‌ها عضو نقش ها

Mahdi ۰۲ فروردین ۱۴۰۲، ۱۳:۲۱

بحث تعلق داشتن رو اینطور تفسیر کن:

آیا اگه جدول یوزرها نبود رول میتونستیم داشته باشیم؟

پس رول‌ها متعلق به یوزرهان

Belong به معنای تعلق داشتنه

اما اگر رولی نداشته باشیم همچنان یوزر‌ها رو میتونیم داشته باشیم.

احمدرضا فاطمی کیا ۰۲ فروردین ۱۴۰۲، ۱۳:۴۷

معنی belongs to رو میدونم

منم همون اول همینو گفتم

ولی استاد در اموزش گفته user‌ها متعلق به permission هستند

    public function permissions()
    {
        return $this->belongsToMany(Permission::class);
    }
Mahdi ۰۲ فروردین ۱۴۰۲، ۱۸:۰۷

ما داریم از طریق متد اینکار رو انجام میدیم.

احمدرضا فاطمی کیا ۰۲ فروردین ۱۴۰۲، ۱۹:۵۱

من جواب سوال مو نگرفتم

ما با این relation یی ک ایجاد کردیم گفتیم user هامون عضوی از role‌های ما هستن

در صورتیکیه user‌های ما باید hasMany رول داشته باشن

Mahdi ۰۲ فروردین ۱۴۰۲، ۱۹:۵۶

الان متوجه منظورت شدم.?

رابطه hasMany زمانی استفاده می‌شه که یه مدل بتونه چندین نمونه از مدل دیگه داشته باشه. پس استفاده از hasMany برای تعریف رابطه بین کاربر و مدل دسترسی مناسبه.

درست میگی. ولی اگه میخوای به متدهای async و اینا دسترسی داشته باشی چاره ای نیست و باید طبق روش مدرس بری.

احمدرضا فاطمی کیا ۰۲ فروردین ۱۴۰۲، ۲۱:۲۹

?کشتی مارو

حالا لطف کن سوال کن ببین استاد چرا از belongs استفاده کرده

Mahdi ۰۲ فروردین ۱۴۰۲، ۲۱:۳۲

با توجه به متدهای attach، sync و syncWithoutDetaching، اینها روشهایی هستن که می‌تونن با رابطه belongsToMany استفاده بشن؛ اگر میخوای از یه رابطه belongsToMany برای نشان دادن رابطه بین کاربران و سطوح دسترسی استفاده کنیی، باید از این روش‌ها برای مدیریت رابطه استفاده کنید. با این حال، اگر به استفاده از hasMany ادامه بدی، نیازی به استفاده از این روش‌ها نداری ولی به متدها دسترسی نداری.

احمدرضا فاطمی کیا ۰۲ فروردین ۱۴۰۲، ۲۱:۳۶

بله خودمم بالا به این موضوع اشاره کردم ولی حتما دلیلی داره ک تیلور اتول این متدها رو با belong مچ کرده در حالی ک میتونست رو hasMany پیاده سازی شون کنه تا این مدل تعریف در روابط نقض نشه

Mahdi ۰۲ فروردین ۱۴۰۲، ۲۱:۴۰