我可以想象有几种方法可以做到这一点,但我想确保我做的事情是有效率的,并以一种Laravel优化的方式。
我有用户和团队。用户可以属于许多团队,当然,一个团队可以拥有许多用户。典型的多对多:
class User extends Authenticatable
{
public function teams()
{
return $this->belongsToMany('App\Team');
}
}和,
class Team extends Model
{
public function users()
{
return $this->belongsToMany('App\User');
}
}我还希望每个用户在每个团队中都有一个“状态”。例如,“活动”和“不活跃”。
我是否为“状态”创建了第三个表/模型,并为用户和团队设置了枢轴?如果是这样的话,我如何使用雄辩的语言来高效地为每个团队获取给定状态的用户?
我是否应该考虑另一种方法?
发布于 2016-10-19 04:17:06
对于多对多的情况,显然需要一个中间表。team_user就行了。您可以将status列添加到此表中。
team_id user_id status
1 1 Active
2 1 Inactive
....关系:
public function teams()
{
return $this->belongsToMany('App\Team')->withPivot('status');
}
public function users()
{
return $this->belongsToMany('App\User')->withPivot('status');
}和,
$users=User::with('teams')->get();
foreach($users as $user)
{
foreach($user->teams as $team)
{
echo $team->pivot->status;
}
}这是使用枢轴表的文档
https://stackoverflow.com/questions/40121918
复制相似问题