سلام دوستان
یه سوال
جدول users دارم با ستونهای زیر
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('is_admin')->default('no');
$table->string('role')->default('user');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
2 نوع کاربر توی سایت داریم
کاربر عادی که با کلمه user نمایش داده میشه و نمایندگان با کلمه admin نمایش داده میشه که از ستونrole گرفته میشه
میخوام توی سایت کاربران مربوط به هر نماینده را نشون بدم و بگیرم
جدول رابطش به چه صورت میشه با توجه به اینکه رابطه بین نماینده و کاربران هردوتاشون توی جدول users هست
میخواتم یه جول بزنم به اسم admin_user که بعدش دیدم قاعدتا باید یه ستون user_id داشته باشم و یه ستون admin_id ولی خب جدول admin نداریم که . چیکار کنم :))
باید بین جدول user و جدول های Role & Permission یه سری رابطه ایجاد کنی
پکیج های آماده این رابطه رو دارند
بعد میتونی اون رابطه رو روی مدل User اعمال کنی
مثال
use Illuminate\Database\Eloquent\Builder;
User::with('roles')
->whereHas('roles', function(Builder $builder) {
return $builder->where('name', 'admin');
})->get();
مثلا به این ترتیب میتونی
میتونی همچین نوعی از چک کردن رو روی role های دیگه هم اجرا کنی
سلام
بهتر هست به جای is_admin ستون privillage قرار بدید و داخلش Role کاربران رو قرار بدید. باید از رابطه های role و permission استفاده کنید. به صورتی که هر کاربر دارای یک Role است که در یک جدول many to many قرار می گیرد.
@yk5742g
شاید پاسخ شما همینجا باشد
@ali.bayat @mohaligateway
درود دوستان
ممنونم از اینکه همیشه ما را راهنمایی میکنین :)
من یه سیستم ACL کامل نوشتم با اسم جداول permissions و roles و جداول واسط که به کاربران دسترسی های مختلف برای بخش های مختلف سایت را بدم
ولی میخواستم یه چیزی راه بندازم مثل مثال زیر
فرض کنین هر نوشته چند دسته بندی داره و هر دسته بندی مربوطه به چند نوشته هست
حالا ما جداول زیر را داریم
posts
category
category_post
خب توی جدول سوم ستونهای post_id و category_id داریم
اینطوری میتونیم راحت رابطه را برقرار کنیم
ولی برای اون مبحث کاربران چون هر دو نوع کاربر توی جدول users هستن نمیشه این روش را پیاده کرد
راه حل بهتری دارید ؟
برای برقرار کردن ارتباط many to many شما باید یک جدول ایجاد کنید به نام permission_role که ارتباط بین permission و Role رو داشته باشه. و یک جدول هم به نام role_user که از id های role و user تشکیل شده است.
@yk5742g