首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何以最“雄辩”的方式构建这种多到多对多的关系?

我如何以最“雄辩”的方式构建这种多到多对多的关系?
EN

Stack Overflow用户
提问于 2016-10-19 04:04:13
回答 1查看 56关注 0票数 1

我可以想象有几种方法可以做到这一点,但我想确保我做的事情是有效率的,并以一种Laravel优化的方式。

我有用户和团队。用户可以属于许多团队,当然,一个团队可以拥有许多用户。典型的多对多:

代码语言:javascript
复制
class User extends Authenticatable
{
    public function teams()
    {
        return $this->belongsToMany('App\Team');
    }
}

和,

代码语言:javascript
复制
class Team extends Model
{
    public function users()
    {
        return $this->belongsToMany('App\User');
    }
}

我还希望每个用户在每个团队中都有一个“状态”。例如,“活动”和“不活跃”。

我是否为“状态”创建了第三个表/模型,并为用户和团队设置了枢轴?如果是这样的话,我如何使用雄辩的语言来高效地为每个团队获取给定状态的用户?

我是否应该考虑另一种方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-19 04:17:06

对于多对多的情况,显然需要一个中间表。team_user就行了。您可以将status列添加到此表中。

代码语言:javascript
复制
team_id    user_id    status
1          1          Active
2          1          Inactive
....

关系:

代码语言:javascript
复制
public function teams()
{
    return $this->belongsToMany('App\Team')->withPivot('status');
}
public function users()
{
    return $this->belongsToMany('App\User')->withPivot('status');
}

和,

代码语言:javascript
复制
$users=User::with('teams')->get();
foreach($users as $user)
{
   foreach($user->teams as $team)
   {
        echo $team->pivot->status;
   }
}

这是使用枢轴表的文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40121918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档