Symfony 3中ArrayCollection的随机顺序

时间:2017-05-25 14:58:03

标签: php symfony doctrine-orm symfony-3.1

以下是我的Question实体的一部分:

   /**
     * @ORM\OneToMany(targetEntity="Answer", mappedBy="question", cascade={"all"})
     */
    private $options;

这是Answer实体的一部分:

   /**
     * @ORM\Column(name="answer", type="text")
     */
    private $option;

这是获取随机问题的存储库:

public function findQuestionsForQuiz($quantity = 0)
    {
        // get the lowest id
        $lowestId = $this->createQueryBuilder('q')
            ->select('q.id')
            ->orderBy('q.id', 'ASC')
            ->setMaxResults(1)
            ->getQuery()
            ->getSingleScalarResult()
        ;

        // get the total number of questions
        $totalRows = $this->createQueryBuilder('q')
            ->select('COUNT(q.id)')
            ->getQuery()
            ->getSingleScalarResult()
        ;
        $randomQuestionIds = $this->uniqueRandomNumbersWithinRange($lowestId, $totalRows+$lowestId, $quantity);

        $qb = $this->createQueryBuilder('q')
            ->where('q.id IN(:ids)')
            ->setParameter('ids', $randomQuestionIds)
            ->getQuery()
        ;

        return $qb->getResult();
    }

虽然这个工作正常,但我一直试图让Answers随机排序,我不太清楚如何做到这一点。

1 个答案:

答案 0 :(得分:1)

您可以简单地改变与答案相关的实体。例如:

$entries = $question->getOptions()->toArray(); 
shuffle($entries);

希望这个帮助