我有与不同实体具有多态关系的用户。这是我的数据结构:
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');
}
relationship_level列包含“管理员”,“区域管理员”,“组管理员”,“用户”等之一。您可以在多个实体中担任多个角色。
我想在用户模型scopeByAutorization
中编写一个范围,该范围将返回Auth::user()
以下的所有用户。
例如,如果我是一个群组中的group manager
,而另一个区域中的regional manager
,则我希望查询返回的关系级别比我低的所有人(如果他们进入User-> Group M ->区域M)在相应的组和区域中。
Eloquent是否完全可以实现,还是我需要编写许多自定义逻辑?