Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 具有中间表的两个模型之间的关系_Laravel_Laravel 5_Eloquent_Laravel 5.8 - Fatal编程技术网

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 -

我花了好几个小时在尝试和失败上,阅读文档,并试图将文档翻译成我在Laravel面临的挑战

最糟糕的是,我不认为这个问题很难解决,但不知怎么的,我的大脑不能正常工作

我正在使用的Laravel应用程序是环法自行车赛幻想经理。我有
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我理解。问题是车手可能会因为受伤而退出某一阶段。但他将参加下一阶段。因此,我需要添加每个阶段每个车手的状态。