سلام دوستان
یه سوال
جدول 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 های دیگه هم اجرا کنی
میتونی خودت به صورت دستی جداول دیگه بوجود بیاری مثلا نماینده و مدیر
و در عین حال میتونی از سیستم ACL هم استفاده کنی
پکیج spatie permission گزینه خوبی هست
@ali.bayat @mohaligateway
درود دوستان
ممنونم از اینکه همیشه ما را راهنمایی میکنین :)
من یه سیستم ACL کامل نوشتم با اسم جداول permissions و roles و جداول واسط که به کاربران دسترسی های مختلف برای بخش های مختلف سایت را بدم
ولی میخواستم یه چیزی راه بندازم مثل مثال زیر
فرض کنین هر نوشته چند دسته بندی داره و هر دسته بندی مربوطه به چند نوشته هست
حالا ما جداول زیر را داریم
posts
category
category_post
خب توی جدول سوم ستونهای post_id و category_id داریم
اینطوری میتونیم راحت رابطه را برقرار کنیم
ولی برای اون مبحث کاربران چون هر دو نوع کاربر توی جدول users هستن نمیشه این روش را پیاده کرد
راه حل بهتری دارید ؟
باید بین جدول user و جدول های Role & Permission یه سری رابطه ایجاد کنی
پکیج های آماده این رابطه رو دارند
بعد میتونی اون رابطه رو روی مدل User اعمال کنی
مثال
use Illuminate\Database\Eloquent\Builder;
User::with('roles')
->whereHas('roles', function(Builder $builder) {
return $builder->where('name', 'admin');
})->get();
مثلا به این ترتیب میتونی
میتونی همچین نوعی از چک کردن رو روی role های دیگه هم اجرا کنی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟