我有一个名为Player的模型' id'和'短名称'。 我有另一个名为Team的模型,包括' id',' teamname',' player_1_id',' player_2_id'和' player_3_id'。
我正在尝试使用关系:
//在模型团队中
public function players()
{
return $this->hasOne('App\Player', 'id','player_1_id')
->hasOne('App\Player', 'id','player_2_id')
->hasOne('App\Player', 'id','player_3_id');
}
//在控制器中
$resource = Team::with('players')->get();
无效。
在这种情况下,哪种是使用eagerloading的最佳(最快)方式? 提前谢谢......
答案 0 :(得分:2)
您应该阅读有关数据库规范化的内容。将player_1_id
,player_2_id
和player_3_id
存储在团队数据库中是没有意义的。如果球队将包含20名球员怎么办?你会创建另一个字段吗?
你应该将team_id
添加到玩家模型中(以防玩家只属于一个团队)或者创建额外的表格来存储玩家和团队之间的联系。