Я не уверен, как сформулировать этот вопрос, но мне нужно сделать следующее:
У меня есть сводная таблица с тремя столбцами user_id
, account_id
, role_id
Так что в моей базе данных, если у меня есть эти строки на account_role_user
(сводная)
|---------------------|------------------|-------------
| account_id | user_id | role_id |
|---------------------|------------------|-------------
| 1 | 1 | 1 |
|---------------------|--------------------------------
| 2 | 2 | 1 |
------------------------------------------------------
| 1 | 2 | 3 |
------------------------------------------------------
Роль - 1 = владелец
Роль - 3 = менеджер
Я пытаюсь получить пользователей с указанной c учетной записью с указанной ролью c. Но я могу только запрашивать такие вещи, как App\User::with('accounts.roles')->whereId(2)->first();
, который показывает пользователей в учетной записи, но группирует их роли, которые не специфицированы c, для учетной записи .
* 1020. * Мне нужны только те пользователи и их роли, которые имеют отношение к учетной записи.
Если я запрашиваю учетную запись с идентификатором 1 и хочу перечислить пользователей этой учетной записи по их роли, у меня должно быть что-то вроде :
$account = App\Account::find(1)
User with ID of 1 has a role id of 1 on the account id of 1
User with ID of 2 has a role id of 3 on the account id of 1
Модель пользователя:
public function accounts() {
return $this->belongsToMany('App\Account', 'account_role_user', 'user_id', 'account_id');
}
public function roles() {
return $this->belongsToMany('App\Role', 'account_role_user', 'user_id', 'role_id');
}
Модель учетной записи:
public function users() {
return $this->belongsToMany('App\User', 'account_role_user', 'account_id', 'user_id');
}
public function roles() {
return $this->belongsToMany('App\Role', 'account_role_user', 'account_id', 'role_id');
}
Ролевая модель:
public function users() {
return $this->belongsToMany('App\User', 'account_role_user', 'role_id', 'user_id');
}
public function accounts() {
return $this->belongsToMany('App\Account', 'account_role_user', 'role_id', 'account_id');
}