花了数小时进行尝试和失败,阅读文档,并试图将文档转换为我在Laravel中面临的挑战。
最糟糕的是,我不认为这个问题很难解决,但是我的头无法正常工作。
我正在使用的Laravel应用是环法自行车赛幻想经理。我有Rider
和Stage
模型,还有中间的RiderStageStatus
模型,我将在其中存储有关骑手是否要加入舞台的信息。我也想实现阶段结果,所以我想稍后会再次出现该问题。
但是,我的数据库如下所示:
riders
- id
- name
- ...
stages
- id
- departure
- arrival
- ...
statuses
- id
- name
- ...
rider_stage_statuses
- id
- rider_id
- stage_id
- status_id
因此,我应该能够了解某个阶段Stage::find(1)->riders
的骑手及其状态,还应该获取每个阶段Rider::find(1)->stages
的骑手的状态。
但是我无法在模型中建立正确的关系。我在做什么错了?
答案 0 :(得分:3)
The documentation显示您可以添加一个额外的参数来告诉Laravel将哪个表用作数据透视表。
按如下所示构建课程:
class Rider {
public function stages() {
return $this->belongsToMany(Stage::class, 'rider_stage_statuses');
}
}
class Stage {
public function riders() {
return $this->belongsToMany(Rider::class, 'rider_stage_statuses');
}
}
我们还可以通过修复intermediate table来修复您的代码。
谁应该这样构造您的代码:
class Rider {
public function stages() {
return $this->belongsToMany(Stage::class)->using(RiderStageStatus::class);
}
}
class Stage {
public function riders() {
return $this->belongsToMany(Rider::class)->using(RiderStageStatus::class);
}
}