#laravel #api #relationship
Вопрос:
Я создаю API laravel с функцией пользовательских разрешений. Это моя структура таблиц:
User id | email | password Company id | companyName Permissions id | name User_has_permissions user_id | company_id | permission_id
Я получаю пользователя и разрешения с помощью кода ниже в модели:
public function permissions() { return $this-gt;belongsToMany(Permission::class, 'user_has_permission', 'user_id', 'permission_id'); }
И в контроллере:
public function show($company_id, $user_id) { //now I need return only permissions related with $company_id return User::with(['permissions'])-gt;find($User_id); }
Теперь мне нужно получить пользователя и ваши разрешения, но только связанные с идентификатором компании.
У кого-нибудь есть какие-либо идеи, как я могу получить этот результат?
Любая идея приветствуется.
Большое спасибо.
Ответ №1:
Вы можете выполнять запросы с помощью includes, используя синтаксис значения ключа в качестве параметра. В BelongsToMany
, он внутренне соединяется со сводной таблицей, что позволило бы добавить условие на comapny_id
.
return User::with(['permissions' =gt; function ($query) use ($company) { $query-gt;where('user_has_permission.company_id', $company-gt;id); }])-gt;find($id);
Комментарии:
1. Не проверено, так что протестируйте его и посмотрите, поможет ли это 🙂