渴望在一个模型中多次加载相同的模型

Eager loading same model multiple times in a model

我有一个名为 Player 的模型,具有 'id' 和 'shortname'。 我有另一个名为 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(); 不起作用。

在这种情况下,使用预加载的最佳(最快)方式是什么? 提前致谢...

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

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