Laravel在多个列上有很多关系

时间:2016-01-15 10:05:35

标签: php laravel laravel-5 eloquent laravel-5.1

我试图在已经存在的数据库上设置Laravel关系,但我无法更改。

在此数据库中,有一个名为Teams的表,其中包含列:

  • Teamleader_1
  • Teamleader_2

此外,还有一个名为Users的表格,其中包含一列:

  • USER_ID

这些表格之间的关系如下:Users.User_id = Teams.Teamleader_1Users.User_id = Teams.Teamleader 2

如何在两个teamleader列上的用户和团队之间设置hasMany关系?

1 个答案:

答案 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;