آیا جدول کاربران با مدیران بهتره یکی باشه و تفکیک باشه

3 ماه پیش توسط محمدحسن یگانه آپدیت شد
آفلاین
user-avatar
ali kiani ( 3734 تجربه )
3 ماه پیش

لینک کوتاه اشتراک گذاری

0

سلام وقت همه بخیر
دوستان سوال اینم ک تو یه پروژه بهتره جدول کاربران (هر نوع کاربر) یه جدول باشه یا تفکیک کنیم مثلا جدول مدیرها را جدا کنیم کاربران هم همینطور
لطفا جواب هاتون با ذکر دلیل باشه
مچکرم از وقتی ک میزارین

آفلاین
user-avatar
سینا خاقانی ( 10650 تجربه )
3 ماه پیش
تخصص : توسعه دهنده

لینک کوتاه اشتراک گذاری

0

@a.kiani110
سلام
این بیشتر بر میگرده به نوع طراحی شما اما معمولا جدول کاربران یکی هستش مگر اینکه اطلاعات دریافتی کاربران با هم خیلی متفاوت باشه
اگر جدول ها یکی باشه مدیریت اونها (مخصوصا در ریلیشن ها) راحتتر خواهد بود و اینکه ستونهای تکراری حذف خواهد شد و شما فقط با یک جدول سرو کار دارید
اما باز هم همه ی اینها به نوع سایت شما بر میگرده

آفلاین
user-avatar
محمدحسن یگانه ( 96119 تجربه )
3 ماه پیش
تخصص : Full-Stack Web Developer Freelancer

لینک کوتاه اشتراک گذاری

0

اگر میخواهید از سیستم Auth لاراول و بسیاری دیگه از قابلیت ها بدون دردسر اضافه و بعضا غیرقابل حل مواجه نشید پیشنهادم اینه:

اگر تفاوت های هر یک از این نقش ها با هم خیلی زیاد نیست فقط جدول uers داشته باشید و تمامی اطلاعات رو داخل همین جدول ذخیره کنید. برای تعیین نقش هم از روابط one-to-many یا many-to-many استفاده کنید. و یا از یکی از پکیج های مطرح ACL موجود استفاده کنید. مثلا:
https://github.com/JosephSilber/bouncer
https://github.com/spatie/laravel-permission

ولی اگر تفاوت هاشون نسبتا زیاد هستند و حرفه ای تر میخواید کار کنید، به ازای همه کاربران سیستم فارغ از نقششون یک رکورد در جدول users داشته باشید و فیلدهای عمومی هر کاربر رو داخل این جدول تعریف کنید. مثلا هر کاربر فارغ از نقشش دارای username و‌ password و avatar و first_name و last_name و mobile و ... هست.

حالا اگر مثلا دو نقش استاد و دانشجو دارید، برای هر کدوم یک جدول جداگانه می‌سازید بنام masters و students که در هر یک با استفاده از یک رابطه one-to-one و با FK برابر با user_id ارتباط بین این جداول با جدول users رو برقرار می‌کنید. در نهایت ممکنه برای اساتید فیلدهای خاصی مدنظر داشته با

students:
    -id
    -user_id
    -code
    -entrance_year
    -major
    -...

روابط رو در فایل Model ها هم تعریف می کنید و از این به بعد خیلی راحت می‌تونید از یک دانشجو به کاربر برسید و بالعکس:

$student = Auth::user()->student;
$user = Student::find($id)->user;

باز هم جواب نهایی رو نیازمندی های پروژه شما تعیین می‌کنه و شاید روش‌های بهتری باشه. ولی این هم یکی از بهترین روش هاست به نظرم.

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.