У меня есть пользователи, которые имеют полиморфные отношения с разными сущностями.Вот моя структура данных:
group
-id
-title
region
-id
-title
activity
-id
-title
users
-id
-name
relationships
-id
-user_id
-relationship_id
-relationship_type
-relationship_level
Отношения определены во всех моделях, например - Модель пользователя:
public function organization()
{
return $this->morphedByMany('App\Organization', 'relationship')->withPivot('relationship_level');
}
Столбец отношение_уровень содержит один из «Администратор», «Региональный менеджер"," Менеджер группы "," Пользователь "и т. Д. Вы можете быть несколькими ролями в нескольких объектах.
Я хочу написать область действия в модели Users scopeByAutorization
, которая возвращаетвсе пользователи ниже Auth::user()
.
Например, если я group manager
в одной группе и regional manager
в другом регионе, я хочу, чтобы запрос возвращал всех, у кого уровень_отношений ниже моего (еслиони идут Пользователь-> Группа М-> Региональный М) в соответствующей группе и регионе.
Это вообще возможно с помощью Eloquent или мне нужно написать много собственной логики?