Laravel hasManyThrough有多个关键字段

时间:2016-03-07 11:01:59

标签: php laravel

我正在尝试制作我认为与多个关键字段的Laravel hasManyThrough关系。我的数据库看起来像:

  • 员工

    • ID
    • team_id>参考团队
    • 名称
  • 小组

    • ID
    • teamleader1_user_id>参考员工
    • teamleader2_user_id>参考员工
    • teamleader3_user_id>参考员工

我知道数据库设置不太理想,但由于它是外部应用程序数据库,我无法改变任何内容。

在我的员工模型中,我希望创建一种关系,通过团队中的一个团队领导者字段,可以提取属于员工的所有员工。我该怎么设置呢?

1 个答案:

答案 0 :(得分:0)

您可以将其作为ManyToMany关系处理,与三个OneToMany捆绑在一起。

class Team extends Model{
public function employees()
{
    return $this->hasMany('App\Employee');
}

public function teamleader1()
{
    return $this->hasOne('App\Employee','teamleader1_user_id');
}

public function teamleader2()
{
    return $this->hasOne('App\Employee','teamleader2_user_id');
}

public function teamleader3()
{
    return $this->hasOne('App\Employee','teamleader3_user_id');
}
}

class Employee extends Model {
    public function teams()
    {
        return $this->belongsToMany('App\Team');
    }
}

您可能有一个名为employee_team的中间表,其名称为" name"它的属性。有关详细信息,您可以查看Laravel Docs上的Many to many关系。