【发布时间】:2019-11-13 02:50:28
【问题描述】:
花费数小时尝试和失败,阅读文档并尝试将文档翻译成我在 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。
但我无法在模型中建立正确的关系。我做错了什么?
【问题讨论】:
-
rider_stage_statuses看起来像三元关系的数据透视表。 Laravel 不支持这些,所以拥有RiderStageStatus可能是不可避免的。我认为,在您的特定情况下,三元组并不是绝对必要的,但如果您仍然想沿着这条路走下去,请为额外的挑战做好准备 -
@apokryfos 有趣的是,从长远来看,我宁愿做最聪明的事情。如果我应该避免三元关系,我应该如何开始?
-
我个人怀疑地看着
status表。这实际上取决于您的数据模型是什么,但我希望状态与骑手直接相关,而不是骑手/阶段,假设我已经正确理解了状态。 -
@apokryfos 我明白了。问题是骑手可能会因为受伤而退出一个阶段。但他将参加下一阶段。因此,我需要为每个骑手的每个阶段添加一个状态。
标签: laravel laravel-5 eloquent laravel-5.8