随着symfony获得随机结果的多对多关系

时间:2017-01-17 13:56:58

标签: php doctrine-orm doctrine symfony

我的学说实体与实体问题和游戏有很多很多关系。

我想随机提出一个游戏问题

现在我可以使用这种语法$game->getQuestions()来获取游戏的问题,但它不会给我一个随机的问题它只是给我一个游戏的所有问题

2 个答案:

答案 0 :(得分:1)

通常有两种解决方案:

  1. 如果Game模型的可用问题数量不是很大,只需向其中添加一种方法,然后从Question ArrayCollection中随机选择一个问题。< / p>

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

  3. 请参阅http://symfony.com/doc/current/doctrine/repository.htmlhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html

答案 1 :(得分:0)

不是很好的代码,但工作:

假设您的问题是\Doctrine\Common\Collections\ArrayCollection

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

如果有很多问题,你可以使用0到n-1之间的随机偏移量进行自定义查询(n =你对这个游戏有多少问题)