微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何通过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 举报,一经查实,本站将立刻删除。