我试图在已经存在的数据库上设置Laravel关系,但我无法更改。
在此数据库中,有一个名为Teams
的表,其中包含列:
此外,还有一个名为Users
的表格,其中包含一列:
这些表格之间的关系如下:Users.User_id
= Teams.Teamleader_1
或Users.User_id
= Teams.Teamleader 2
如何在两个teamleader列上的用户和团队之间设置hasMany关系?
答案 0 :(得分:5)
首先,您需要在团队模型中定义2个关系:
public function teamleader1() {
return $this->belongsTo(User::class, 'Teamleader_1', 'User_id');
}
public function teamleader2() {
return $this->belongsTo(User::class, 'Teamleader_2', 'User_id');
}
一旦拥有它,定义一个访问者,从这些关系中获取团队领导者:
public function getTeamleaderAttribute() {
return $this->teamleader1 ?: $this->teamleader2;
}
获得后,您应该可以通过以下方式访问用户:
$teamLeader = $team->teamleader;