我想在第三个表之间建立两个表之间的关系,如:
player model
public function teams()
{
return $this->belongsToMany(Team::class, 'team_players', 'team_id', 'player_id');
}
team model
public function players()
{
return $this->belongsToMany(Player::class, 'team_players', 'team_id', 'player_id');
}
目前可以同时为无限队伍选择1名球员,我想要的是1名球员= 1名球队。如果我将球员与球队分开,那么就可以将其签到另一支球队。
我该怎么做?
答案 0 :(得分:1)
希望您有一个数据透视表team_players
,其中至少包含team_players
和team_id
字段。考虑到这一点,您应该反转当前team
模型中的外键,例如,将其更改为:
public function players()
{
return $this->belongsToMany(
Player::class,
'team_players',
'player_id', // foreign key of this model
'team_id' // foreign key of joining model
);
}
第三个参数是您所在模型的外键名称 正在定义关系,而第四个论点是 要加入的模型的外键名称。 Check the documentation
答案 1 :(得分:0)
我相信在你的情况下,你需要团队和球员之间的一对多关系。一个团队可以拥有很多"许多玩家,而玩家"属于"一个团队。 所以对于团队模型
public function players()
{
return $this->hasMany(Player::class);
}
和玩家模型
public function team()
{
return $this->belongsTo(Team::class);
}
就数据库表而言,您只需要一个" team_id"玩家表中的字段来保持关系。