【发布时间】:2013-12-20 00:54:17
【问题描述】:
我正在使用 Laravel 4 并尝试设置一个表结构来处理以下问题。
- 我有 3 张桌子:球员、球队和赛季
- 对于每个赛季,我将分配多支球队,每支球队将分配多名球员。
- 我需要维护每个赛季的历史数据,因此我不能直接连接表格,因为更改基础球员/球队表格会以这种方式影响所有赛季。
我使用中间表 teams_in_season 连接了 Seasons -> Teams 表,如下所示:
class Season extends \Eloquent
{
public function teams()
{
return $this->belongsToMany('Team', 'teams_in_season');
}
}
按预期工作。当我想设置玩家分配时,问题就来了。自然地,我想将球队与球员联系起来,所以我的思路是我需要从另一个中间表创建一个中间表。例如:
seasons -> teams_in_season -> players_in_teams -> players
如果我选择 Seasons -> Players,那将可行,只是我无法以这种方式急切加载它。
seasons -> players_in_season -> players
$season->teams->players->get();
本质上,用户输入数据的方式是创建赛季、分配球队、将球员分配到球队,然后最终添加得分。所有输入的数据都需要维护,因此需要中间表。
所以,这是我的问题:
- 我可以这样嵌套/链接中间表吗?
- 有没有更好的方法可以设置我想要实现的目标?
【问题讨论】:
标签: orm laravel laravel-4 eloquent eager-loading