【发布时间】:2013-03-16 19:34:26
【问题描述】:
我一直在尝试定义一些数据库模式来使用 laravel 框架。我想模拟一场足球比赛。我想做的第一步是定义实体关系图,但我发现这(我认为这很简单)在某些方面令人困惑。
首先,显而易见的方法是说一场比赛与两支球队相关,而一支球队与任意数量的比赛相关。所以,我们会有一个“多对多”的关系。
但是多对多关系的实现是有两个表和一个中间表来关联两个实体。我认为这太过分了,因为我知道一个 Match 总是有两个 Teams 并且只需有两列(local_id 和 visitant_id)以及 Teams 表的外键就足够了。另外,我希望能够做到:
Match::find(1)->local() or Match::find(1)->visitant();
因此,考虑到这一点,我正在实施“一对多”关系,但是对此我还有另一个问题。要检索团队参加过的所有比赛,我想做:
Team::find(1)->matches();
但我不能这样做,因为我在 eloquent 中定义 match() 方法时只能指定一个键列(默认为 team_id,但应该是 visitant_id 和 local_id)。
【问题讨论】: