Попытайтесь понять структуру вашей таблицы, используя эту диаграмму ER.
Чтобы справиться с этой ситуацией, вы можете создать 3 «красноречивых модели»
- Пользователь
- Роль
- Разрешение
в каждой модели вы можете создать belongsToMany()
взаимосвязь друг с другом моделей.
один пример, «Модель пользователя»
public function permissions()
{
// need to define any other differences in your tables foreign keys as 2nd, 3rd parameters and so on.
return $this->belongsToMany(Permission::class);
}
Теперь вам нужно получить всех пользователей, «у которых есть роль, обладающая привилегией», ИЛИ , которые напрямую имеют привилегию..
для этого.
$users = User::whereHas('privileges', function($query) {
$query->where('permission_name', 'notification.error.process');
})->orWhereHas('roles.permissions', function($query) {
$query->where('permission_name', 'notification.error.process');
})->get();
Надеюсь, у вас появится идея.Ваш код может немного отличаться от моего.но это понятие.