Laravel hasMany не возвращает коллекцию - PullRequest
0 голосов
/ 17 мая 2018

Я создаю промежуточное ПО для разрешений. Разрешения основаны на типах действий пользователя и / или типе модуля / элемента (т. Е. Кнопка удаления).

Модель ActionPermission (таблица action_permission) имеет все типы разрешений, в то время как таблица users__action_permission является стержнем для User & ActionPermission со всеми пользователями и их идентификаторами разрешений.

User

имеет метод permissions(), который получает все разрешения для пользователя

public function permissions()
{
    return $this->hasMany('App\ActionPermission');
}

checkUserPermissions (промежуточное ПО)

public function handle($request, Closure $next)
{
        $response = $next($request);
        $userId = Auth::id();
        $userPermissions = User::findOrFail($userId)->permissions()->get();
        dd($userPermissions);
}

Поскольку permissions() ищет ключ user_id, а модель ActionPermission (таблица action_permission) не имеет соответствующего ключа user_id, мне нужна таблица users__action_permission, в которой он хранится user_id.

Мой вопрос: есть ли у Laravel способ для User::permissions() доступа к таблице users__action_permission, или мне нужно построить модель для этого?

1 Ответ

0 голосов
/ 17 мая 2018

Вам не нужна модель для сводной таблицы.

в модели пользователя добавьте

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

в модели разрешения действий добавьте

public function Users() {
    return $this->belongsToMany('App\ActionPermission', 'users_action_permission');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...