繁体   English   中英

在Laravel中如何与同一张桌子建立2个关系?

[英]How in Laravel make 2 relations to same table?

在Laravel关系中遇到麻烦时,不确定是否有解决方案,但希望你们能帮助我。 因此,假设我有2个表USERSTRAINEES 用户可以被视为公司,管理员,指导员,取决于现场角色 关于关系作为公司的用户可以有很多TRAINEES,但作为指导者也可以有很多TRAINEES。 那么在这种情况下,我如何建立它们之间的关系? 表TRAINEES应该具有字段COMPANY_IDINSTRUCTOR_ID 或如何? 但这是同一张表USERS 我不知道你是否清楚。 问我吧。 指望你们

设计用户和受训者表,如下所示:

用户表的列/字段:

  • id(主键)
  • 用户名(字符串)
  • 角色(字符串,索引)

受训人员表的列/字段:

  • id(主键)
  • 名称(字符串)
  • trainer_id(整数,索引)
  • company_id(整数,索引)

然后在受训者模型中,执行以下操作:

public function trainer()
    {
        return $this->belongsTo('App\User', 'trainer_id');
    }

public function company()
    {
        return $this->belongsTo('App\User', 'company_id');
    }

用户模型中,执行以下操作:

public function trainees()
    {
        if($this->attributes["role"] == "company")
            return $this->companyTrainees();
        if($this->attributes["role"] == "instructor")
            return $this->instructorTrainees();
        return array();
    }

public function companyTrainees()
    {
        return $this->hasMany('App\Trainee', 'trainer_id');
    }

public function instructorTrainees()
    {
        return $this->hasMany('App\Trainee', 'company_id');
    }

在控制器和其他地方使用这些关系。 这没有经过测试,但是应该不会太过马车。 别忘了用有效的数据(尤其是ID)为数据库播种。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM