php - Laravel 如何与同一张表建立 2 个关系?
问题描述
在 Laravel 中遇到一些问题,不确定是否有任何解决方案,但希望你们能帮助我。所以让我们假设我有 2 张表USERS和TRAINEES。用户可以被视为公司,管理员,讲师取决于字段角色。关于关系 用户作为公司可以有很多实习生,但作为讲师也可以有很多实习生。那么在这种情况下,我该如何建立它们之间的关系呢?表 TRAINEES 应该有字段COMPANY_ID和INSTRUCTOR_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。
推荐阅读
- python-3.x - 当名称在第二行中定义时,Pandas 不读取_csv 原始数据
- python - 将 numpy.float64 转换为整数
- c# - 如何使用 C# Microsoft.Graph 创建回复?
- python - 输出是浮点数而不是整数
- excel - 为什么VB在遍历集合时抛出
- git - 为什么签出最近的提交后我有一个分离的 HEAD?
- scala - 在 Scala 中提取域后缀和计算命中计数
- jetty - 如何动态配置非嵌入式 Jetty 的 servlet 设置?
- php - 使用 Mailgun 的官方 PHP SDK 成功排队邮件时如何读取 API 响应?
- android - 在运行 react-native run-android 时遇到问题