Php 使用symfony多对多关系获取随机结果

Php 使用symfony多对多关系获取随机结果,php,doctrine-orm,doctrine,symfony,Php,Doctrine Orm,Doctrine,Symfony,在我的学说中,实体与实体的问题和游戏有多对多的关系 我想随机得到一个游戏的问题 现在,我可以用这种语法获得游戏的问题,但这不是随机的问题,而是给我一个游戏的所有问题,通常有两种解决方案: 如果您的游戏模型的可用问题数量不多,只需添加一个方法,然后从问题数组集合中随机选择一个问题即可 如果你的游戏中有大量的问题,那么最好的办法就是在自定义存储库中编写一个自定义查询,以获取与你的游戏相关联的随机问题 请参见和不好的代码,但工作正常: 假设您的问题是\doctor\Common\Collections

在我的学说中,实体与实体的问题和游戏有多对多的关系

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


现在,我可以用这种语法获得游戏的问题,但这不是随机的问题,而是给我一个游戏的所有问题,通常有两种解决方案:

  • 如果您的
    游戏
    模型的可用问题数量不多,只需添加一个方法,然后从
    问题
    数组集合
    中随机选择一个问题即可

  • 如果你的
    游戏中有大量的
    问题
    ,那么最好的办法就是在自定义
    存储库中编写一个自定义
    查询
    ,以获取与你的
    游戏相关联的随机问题


  • 请参见和

    不好的代码,但工作正常:

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

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

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

    我认为您应该使用过滤功能