Laravel 5 使用自己的数据获取集合,并从Elount中的子集合中提取变量

Laravel 5 使用自己的数据获取集合,并从Elount中的子集合中提取变量,laravel-5,eloquent,Laravel 5,Eloquent,首先,很抱歉,问题描述没有很好地描述我的问题,但我不知道如何在一行中更好地形成我的问题。欢迎提出建议 背景信息 拉威尔5.6.x 我将我的对象定义为雄辩的模型 使用迁移创建数据库 有关应用程序的背景信息 我有一个应用程序,其中游戏对象与玩家对象具有一对多关系。Game对象包含所有游戏细节,Player对象包含单个玩家的所有细节 玩家被邀请参加一场游戏,可以接受也可以拒绝。此信息保存在玩家自身中,因为每个游戏的玩家都是唯一的 现在我想创建一个所有游戏的概述。概述中的一项内容是被接受的玩家数量、

首先,很抱歉,问题描述没有很好地描述我的问题,但我不知道如何在一行中更好地形成我的问题。欢迎提出建议

背景信息

  • 拉威尔5.6.x
  • 我将我的对象定义为雄辩的模型
  • 使用迁移创建数据库
有关应用程序的背景信息

我有一个应用程序,其中
游戏
对象与
玩家
对象具有一对多关系。
Game
对象包含所有游戏细节,
Player
对象包含单个玩家的所有细节

玩家被邀请参加一场游戏,可以接受也可以拒绝。此信息保存在玩家自身中,因为每个游戏的玩家都是唯一的

现在我想创建一个所有游戏的概述。概述中的一项内容是被接受的玩家数量、被邀请的玩家及其id

要获取所有游戏,我使用
$games=Game::all()什么给了我一个包含所有游戏的数组(没有玩家)。我可以通过以下操作将玩家添加到阵列中:

foreach ($game as $singleGame){
   $singleGame->players
}
之后,我的$games数组包含所有游戏,每个游戏及其玩家都有一个子集合。这几乎是我所需要的,但是子集合包含了关于玩家的许多细节,例如玩家的手牌

问题
有没有一种简单的方法可以将每个玩家的
invite_status
player_id
值添加到游戏的子集合而不是所有玩家变量中?

这应该可以做到:

$games = Game::with(['players' => function( $query){
    $query->select('invite_status', 'player_id');
}])->get();

使用循环获取每个游戏的玩家将对每个游戏进行查询,这是非常糟糕的。使用
with()
将通过一个查询加载所有字段,并使用
select()

指定您需要的字段似乎就是我需要的。。。不幸的是,该查询无法正常工作,因为添加到单个游戏中的玩家始终为0,上面的查询结果为0。我已经检查了player对象中的变量名称,但这些名称是正确的。当我注释掉“$query->select('invite_status'、'player_id');”时它确实包括球员,但包括所有的球员。我同意只查询一次会更好,但我不知道如何作为初学者使用Laravel/Eloquent@RoDo,包括在
$query->select('invite_status','player_id')
与游戏相关的列,可能是
game\u id
或类似的内容。您可以缩短它:
game::with('players:invite\u status,player\u id,game\u id')->get()game\u id
的确如此),它工作得非常完美!此外,short方法非常有用,但拥有完整的查询也很好,因为它提供了关于如何构建查询的更好想法。