У меня вопрос о Laravel Relationships.
У меня сырой запрос на объединение, и я хочу перевести в красноречивые отношения.
Прежде всего ... у меня есть 4задействованные таблицы:
роли
id|name
разрешения
id|name|code|description
access_role
role_id|permission_id
пользователи
id|...........|role_id
missions_user
user_id|permission_id
Внутри моей модели User, у меня есть этот метод:
/**
* @TODO: Transform this into a eloquent relationship
*
* @return Collection
*/
public function permissions()
{
$query = sprintf('
(
SELECT permissions.*
FROM permissions
INNER JOIN permission_role ON permission_role.permission_id = permissions.id
WHERE permission_role.role_id = %s
) UNION
(
SELECT permissions.*
FROM permissions
INNER JOIN permission_user ON permission_user.permission_id = permissions.id
WHERE permission_user.user_id = %s
)', $this->role_id, $this->id);
return Permission::hydrate(DB::select($query));
}
Дело в том, что я хочу получить все разрешения по роли, с которой связан пользователь, и по отдельным разрешениям, связанным с пользователем.
Могу ли я преобразовать это в какой-то красноречивыйтакие отношения, как hasMany, принадлежит ToMany и т.д ...?