2017-01-17 2 views
-1

У меня есть много-много отношений в моей сущности доктрины с сущностями Вопрос и игра.получение случайного результата с symfony многими для многих отношений

Я хочу, чтобы получить один вопрос о игре случайно

Теперь я могу получить вопросы игры с этим синтаксисом $game->getQuestions(), но это не дает мне случайный вопрос, просто дайте мне все вопросы игры

+0

Я думаю, вы должны использовать функцию фильтра –

ответ

1

Существует два решения:

  1. Если количество имеющихся вопросов вашей Game модель не так уж велика, просто добавить метод к нему, и случайно выбрать вопрос из QuestionArrayCollection.

  2. Если есть много и много Question внутри Game, то вам лучше всего, чтобы написать обычай Query внутри пользовательских Repository принести случайный вопрос, связанный с Game.

См http://symfony.com/doc/current/doctrine/repository.html и http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html

0

Не хороший код, но работает:

Предполагая, что ваши вопросы является \Doctrine\Common\Collections\ArrayCollection

$questions = $game->getQuestions()->toArray(); 
shuffle($questions); 
$randomQuestion = array_shift($questions); 

Если есть много вопросов, вы можете сделать пользовательский запрос со случайным смещением между 0 и n-1 (n = сколько у вас вопросов для этой игры)

Смежные вопросы