Получить коллекцию с собственными данными и секретными переменными из субколлекции в eloquent - PullRequest
0 голосов
/ 28 мая 2018

Прежде всего, извините, когда описание вопроса не очень хорошо описывает мой вопрос, но я понятия не имею, как лучше сформулировать мой вопрос в одной строке.Предложения приветствуются ..

Справочная информация

  • Laravel 5.6.x
  • Я определил свои объекты как красноречивые модели
  • Использование миграций для создания базы данных

Справочная информация о приложении

У меня есть приложение, в котором объект Game имеет один ко многимсвязь с Player объектами.Объект Game содержит все подробности игры, объект Player содержит все подробности об отдельном игроке.

Игроки приглашаются на игру и могут принять решение отказать в этом.Эта информация сохраняется в самом игроке, поскольку игрок уникален для каждой игры.

Теперь я хочу создать обзор всех игр.Одна из вещей в обзоре - количество принятых игроков , приглашенных игроков и их идентификаторов .

Чтобы получить все игры, я использую $games = Game::all();, что дает мне массив со всеми играми (без игроков).Я смог добавить игроков в массив, выполнив:

foreach ($game as $singleGame){
   $singleGame->players
}

После этого мой массив $ games содержит все игры с вложенной коллекцией на игру со своими игроками.Это почти то, что мне нужно, но подколлекция содержит много деталей об игроке, например, карты, которые есть у игрока.

Вопрос Есть ли простой способ просто добавить значение invite_status и player_id каждого игрока в игру, его подколлекцию вместо всех игроков?

1 Ответ

0 голосов
/ 28 мая 2018

Это должно сработать:

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

Использование цикла для получения игроков каждой игры сделает запрос для каждой, что очень плохо.Использование with() загрузит все из них одним запросом и определит, какие поля вам нужны, с помощью select().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...