如何通过Laravel 7中的变体枢轴建立另一种关系 表格模型与关系团队

问题描述

表格

用户

团队

角色

  • 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');
}

通过此设置,我可以在UserTeam中获得角色,但这只是具有user_id和team_id的角色数据,现在我尝试获取User或{{1 }}实际数据,这就是我现在要做

团队

Team

它工作正常,但是有两个问题:

  1. 我真的不喜欢在模型中包含业务逻辑,希望它只能进行关系设置
  2. public function roleUsers(string $role): Builder { return User::whereIn('id',$this->roles()->where('name',$role)->pluck('user_id')); } 如果只能通过使用roleUsers来完成,则需要两次查询才能完成工作,即使它是丑陋的sql,也应该仅是一个查询

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)