在模型

时间:2015-12-13 18:41:55

标签: database laravel laravel-5 eloquent database-normalization

我有一个名为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的最佳(最快)方式? 提前谢谢......

1 个答案:

答案 0 :(得分:2)

您应该阅读有关数据库规范化的内容。将player_1_idplayer_2_idplayer_3_id存储在团队数据库中是没有意义的。如果球队将包含20名球员怎么办?你会创建另一个字段吗?

你应该将team_id添加到玩家模型中(以防玩家只属于一个团队)或者创建额外的表格来存储玩家和团队之间的联系。