我一直在try 定义一些数据库模式来使用laravel框架.我想做一场足球比赛的模特.我想做的第一步是定义实体关系图,但我发现这(我认为这很简单)在某些方面令人困惑.
首先,显而易见的方法是说一场比赛与两支球队有关,一支球队与任何数量的比赛有关.所以,我们会有一种"多对多"的关系.
但多对多关系的实现需要两个表和一个中间表来关联这两个实体.我觉得这太过分了,因为我知道一场比赛总是有两支球队,只要有两列(local_id和visitant_id)和球队表的外键就足够了.另外,我希望能够做到:
Match::find(1)->local() or Match::find(1)->visitant();
所以,考虑到这一点,我实施了"一对多"的关系,但我有另一个问题.要恢复一支球队的所有比赛,我想:
Team::find(1)->matches();
但我不能这样做,因为在eloquent中定义matches()方法时,我只能指定一个键列(默认情况下,它应该是team_id,但应该是visitant_id和local_id).