首先,很抱歉问题描述没有很好地描述我的问题,但我不知道如何在一行中更好地组织我的问题。欢迎提出建议..
背景信息
有关应用程序的背景信息
我有一个应用程序,其中Game
对象与Player
对象具有一对多关系。Game
对象包含所有游戏详细信息,Player
对象包含单个玩家的所有详细信息。
玩家被邀请参加一场比赛,可以接受也可以拒绝。这些信息保存在玩家本身中,因为玩家在每个游戏中都是唯一的。
现在我想创建所有游戏的概述。概览中的一件事是接受玩家的数量,邀请的玩家和他们的id。
为了获取所有游戏,我使用$games = Game::all();
,它给了我一个包含所有游戏(没有播放器)的数组。我可以通过执行以下操作将玩家添加到数组中:
foreach ($game as $singleGame){
$singleGame->players
}
在那之后,我的$games数组包含所有的游戏,每个游戏都有一个子集合,每个游戏都有它的玩家。这几乎就是我所需要的,但是子集合包含了许多关于玩家的细节,例如玩家拥有的手牌。
问题有没有一种简单的方法,将每个玩家的invite_status
和player_id
值添加到游戏的子集合中,而不是所有玩家的var中?
发布于 2018-05-28 18:19:10
这应该能起到作用:
$games = Game::with(['players' => function( $query){
$query->select('invite_status', 'player_id');
}])->get();
使用循环来获取每个游戏的玩家将对每个玩家进行查询,这是非常糟糕的。使用with()
将通过一个查询加载所有字段,并使用select()
指定需要的字段。
https://stackoverflow.com/questions/50563998
复制相似问题