Php Symfony 3中ArrayCollection的随机顺序
这是我的Php Symfony 3中ArrayCollection的随机顺序,php,symfony,doctrine-orm,symfony-3.1,Php,Symfony,Doctrine Orm,Symfony 3.1,这是我的问题的一部分实体: /** * @ORM\OneToMany(targetEntity="Answer", mappedBy="question", cascade={"all"}) */ private $options; /** * @ORM\Column(name="answer", type="text") */ private $option; 下面是答案的一部分: /** * @ORM\O
问题的一部分
实体:
/**
* @ORM\OneToMany(targetEntity="Answer", mappedBy="question", cascade={"all"})
*/
private $options;
/**
* @ORM\Column(name="answer", type="text")
*/
private $option;
下面是答案的一部分:
/**
* @ORM\OneToMany(targetEntity="Answer", mappedBy="question", cascade={"all"})
*/
private $options;
/**
* @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();
}
虽然这样做很好,但我一直在尝试将答案随机排序,不太确定如何进行排序。您可以简单地将与答案相关的实体混洗一下。例如:
$entries = $question->getOptions()->toArray();
shuffle($entries);
希望这有帮助为什么不干脆
$entries=$question->getOptions()->toArray();洗牌($entries)代码>?@Matteo,根据您的建议,我循环并询问了所有选项,然后将所有内容添加到另一个数组中,以供twig使用。这很有效。Thanks@Matteo,请将此作为答案,以便我标记并接受它。谢谢@shaNnex欢迎您!我发布了一个答案,这样你就可以结束你的问题了