[英]How in Laravel make 2 relations to same table?
在Laravel关系中遇到麻烦时,不确定是否有解决方案,但希望你们能帮助我。 因此,假设我有2个表USERS和TRAINEES 。 用户可以被视为公司,管理员,指导员,取决于现场角色 。 关于关系作为公司的用户可以有很多TRAINEES,但作为指导者也可以有很多TRAINEES。 那么在这种情况下,我如何建立它们之间的关系? 表TRAINEES应该具有字段COMPANY_ID和INSTRUCTOR_ID ? 或如何? 但这是同一张表USERS 。 我不知道你是否清楚。 问我吧。 指望你们
设计用户和受训者表,如下所示:
用户表的列/字段:
受训人员表的列/字段:
然后在受训者模型中,执行以下操作:
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.