获得随机结果与Symfony多对多关系



我的教义实体与实体问题和游戏有很多对多的关系。

我想随机得到一个游戏问题

现在我可以得到带有这种语法的游戏问题$game->getQuestions()但它不是给我一个随机的问题,它只是给了我游戏的所有问题

通常有两种解决方案:

  1. 如果您的Game模型的可用问题数量不是那么多,只需向其添加一个方法,然后从Question ArrayCollection中随机选择一个问题。

  2. 如果您的Game中有很多很多Question,那么您最好的选择是在自定义Repository中编写一个自定义Query,以获取与您的Game相关的随机问题。

查看 http://symfony.com/doc/current/doctrine/repository.html 和 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html

不是好的代码,但可以工作:

假设您的问题是一个DoctrineCommonCollectionsArrayCollection

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

如果有很多问题,你可以做一个自定义查询,在 0 到 n-1 之间随机偏移(n = 你对此游戏有多少问题)

最新更新