2016-03-13 2 views
0

В настоящее время моих таблицы БД определяются следующим образом:Laravel - проверка записи существования

site_roles - Содержит различные роли

site_user_roles - Ссылки Пользователи многих ролей

site_permission_modules - содержит разные уровни доступа [например. просмотр администратор управление, запрещать пользователь]

site_role_permissions - Ссылки разрешения модули ролей

Мои моделей в Laravel корректно определены для запроса этих многих ко многим отношений. В коде я хочу проверить, связан ли с ним определенный модуль разрешений.

Для лучшего понимания, вот мои модели, а также:

Пользователь

public function SiteRoles() 
    { 
     return $this->belongsToMany('App\SiteRole', 'site_user_roles', 'users_id', 'site_roles_id'); 
    } 

SiteRole

public function Users() 
    { 
     return $this->belongsToMany('App\User', 'site_user_roles', 'site_roles_id', 'user_id'); 
    } 

    public function SitePermissionModules() 
    { 
     return $this->belongsToMany('App\SitePermissionModule', 'site_role_permissions', 'site_roles_id', 'site_permission_modules_id'); 
    } 

SitePermissionModule

public function SiteRoles() 
    { 
     return $this->belongsToMany('App\SiteRole', 'site_role_permissions', 'site_permission_modules_id', 'site_roles_id'); 
    } 

Вот что я в настоящее время сделал:

Auth::User()->SiteRoles()->with('SitePermissionModules')->get() 

с() Ключевое слово возвращает вложенную массив разрешений, связанных с каждой ролью.

Мне нужно проверить, связан ли с ним конкретный модуль разрешений.

Что было бы лучшим способом для laravel для этого?

EDIT:

В основном я просто спрашиваю, что было бы лучшим способом цепи 2 многие ко многим отношений.

ответ

0
Auth::User()->SiteRoles()->with(['SitePermissionModules' => function ($query) { 
            $query->where('site_role_permissions','=','admin'); 
             //use where as per your requirment. 

}])->get(); 

Querying Relaionship

Смежные вопросы