问题描述
表格
- id
- 名称
团队
- id
- 名称
角色
- id
- 名称(所有者| admin |成员)
user_team_role
- user_id(users.id)
- team_id(teams.id)
- roleable_id(roles.id)
- roleable_type(App \ Model \ Role)
模型与关系
App \ Model \ User.PHP
public function roles(): MorphToMany
{
return $this->morphedByMany(Role::class,'roleable','roles','user_id','roleable_id')
}
App \ Model \ Team.PHP
public function roles(): MorphToMany
{
return $this->morphedByMany(Role::class,'team_id','roleable_id');
}
通过此设置,我可以在User
或Team
中获得角色,但这只是具有user_id和team_id的角色数据,现在我尝试获取User
或{{1 }}实际数据,这就是我现在要做的
团队
Team
它工作正常,但是有两个问题:
- 我真的不喜欢在模型中包含业务逻辑,希望它只能进行关系设置
-
public function roleUsers(string $role): Builder { return User::whereIn('id',$this->roles()->where('name',$role)->pluck('user_id')); }
如果只能通过使用roleUsers
来完成,则需要两次查询才能完成工作,即使它是丑陋的sql,也应该仅是一个查询
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)