Laravel 具有中间表的两个模型之间的关系
我花了好几个小时在尝试和失败上,阅读文档,并试图将文档翻译成我在Laravel面临的挑战 最糟糕的是,我不认为这个问题很难解决,但不知怎么的,我的大脑不能正常工作 我正在使用的Laravel应用程序是环法自行车赛幻想经理。我有Laravel 具有中间表的两个模型之间的关系,laravel,laravel-5,eloquent,laravel-5.8,Laravel,Laravel 5,Eloquent,Laravel 5.8,我花了好几个小时在尝试和失败上,阅读文档,并试图将文档翻译成我在Laravel面临的挑战 最糟糕的是,我不认为这个问题很难解决,但不知怎么的,我的大脑不能正常工作 我正在使用的Laravel应用程序是环法自行车赛幻想经理。我有Rider和Stage模型,我有一个中间ridestagestatus模型,我将在其中存储关于某个骑手是否加入该阶段的信息。我也想实现阶段结果,所以我想稍后这个问题会再次出现 但是,我的数据库如下所示: riders - id - name - ... stages -
Rider
和Stage
模型,我有一个中间ridestagestatus
模型,我将在其中存储关于某个骑手是否加入该阶段的信息。我也想实现阶段结果,所以我想稍后这个问题会再次出现
但是,我的数据库如下所示:
riders
- id
- name
- ...
stages
- id
- departure
- arrival
- ...
statuses
- id
- name
- ...
rider_stage_statuses
- id
- rider_id
- stage_id
- status_id
因此,我应该能够获得特定阶段的骑手及其状态stage::find(1)->骑手
,还可以获得骑手的每个阶段的状态rider::find(1)->stages
但我无法在模型中建立正确的关系。我做错了什么?解决方案1
显示您可以添加一个额外的参数来告诉Laravel使用哪个表作为透视表
按如下方式构建您的类:
职业骑手
class-Rider{
公共职能阶段(){
返回$this->belongtomany(阶段::类,“骑手阶段状态”);
}
}
班级阶段
class阶段{
公共活动骑手(){
返回$this->belongtomany(骑手::类,“骑手阶段状态”);
}
}
解决方案2
我们还可以通过修复代码来修复您的代码
什么时候应该这样构造代码:
riders
- id
- name
- ...
stages
- id
- departure
- arrival
- ...
statuses
- id
- name
- ...
rider_stage_statuses
- id
- rider_id
- stage_id
- status_id
职业骑手
class-Rider{
公共职能阶段(){
返回$this->belongstomy(Stage::class)->使用(ridestagestatus::class);
}
}
班级阶段
class阶段{
公共活动骑手(){
使用(RiderTagestatus::class)返回$this->belongTomany(Rider::class)->;
}
}
rider\u stage\u status
看起来像三元关系的透视表。Laravel不支持那些拥有RiderStageStatus
的人。我认为,在你的特殊情况下,三元数并不是绝对必要的,但如果你仍然想沿着这条路走下去,那就准备好额外的三元数challanges@apokryfos有趣的是,从长远来看,我更愿意做最聪明的事情。如果我应该避免三元关系,我应该如何开始呢?我个人怀疑地看着状态表。这实际上取决于您的数据模型是什么,但我希望状态与车手直接相关,而不是与车手/舞台直接相关,前提是我正确理解了状态。@apokryfos我理解。问题是车手可能会因为受伤而退出某一阶段。但他将参加下一阶段。因此,我需要添加每个阶段每个车手的状态。