2016-12-11 3 views
-1

Я работаю над проектом с отношением «многие ко многим» между двумя таблицами roles и users. У меня также сводная таблица role_user, которая содержит информацию о связи между двумя другими таблицами.Laravel eloquent many to many отношения определяют, существует ли связь

role_user два поля, а именно: id s из двух таблиц: role_id и user_id.

Теперь у меня есть пользовательский объект, полученный из таблицы users и другого объекта роли, полученного из таблицы roles. Я хочу определить, принадлежит ли определенная роль определенному пользователю.

Я знаю, что это можно сделать, создав модель для сводной таблицы, а затем используя модель, таблицу role_user можно запросить и определить, существует ли отношение. Но я нахожу этот метод напряженным и удивляюсь, если красноречивый дает простой способ определить это. Спасибо за любую помощь?

ответ

0

Вам не нужно иметь модель role_user. Возможно, у вас уже есть модель для подражания и модель пользователя, связанная с вашими таблицами. Укажите многие ко многим в Role.php и User.php

User.php - функциональные роли

public function roles() 
{ 
    return $this->belongsToMany('App\Role'); 
} 

Role.php - пользователи функции

public function users() 
{ 
    return $this->belongsToMany('App\User'); 
} 

Вы, возможно, придется определить другие параметры, такие как сводная таблица и т. д., если вы не соблюдаете соглашения об именах в столбцах и таблицах таблиц. Поскольку вы, похоже, следуете правилам, я не собираюсь это объяснять. Но вы всегда можете обратиться к laravel documentation's eloquent many-to-may section

Теперь вы можете легко проверить, принадлежит ли пользователь к определенной роли. Рассмотрите следующий пример:

//select a user 
    $user = App\User::find(1); 
    //select a role 
    $role = App\Role::find(1); 
    //get $user's roles. This ill return an array of role objects that are belong to $user 
    $userRoles = $user->roles; 
    //check whether $role is in that array 
    if(in_array($role, $userRoles)){ 
    //do something 
    } 
+0

был ответ любой помощью? – developer

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

  • Нет связанных вопросов^_^