我在我的學說實體中與實體問題和遊戲有多對多的關係。獲得symfony多對多關係的隨機結果
我希望得到一個遊戲的一個問題隨機
現在,我可以得到一個遊戲的問題與這個語法$game->getQuestions()
但它不給我一個隨機的問題,它只是給我一個遊戲的所有問題
我在我的學說實體中與實體問題和遊戲有多對多的關係。獲得symfony多對多關係的隨機結果
我希望得到一個遊戲的一個問題隨機
現在,我可以得到一個遊戲的問題與這個語法$game->getQuestions()
但它不給我一個隨機的問題,它只是給我一個遊戲的所有問題
通常有兩種解決方案:
如果Game
模式是不是一個大的問題提供的號碼,只需添加一個方法給它,並隨機挑選從問題ArrayCollection
。
如果有很多和你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
不好的代碼,但工作:
假設您的問題是一個\Doctrine\Common\Collections\ArrayCollection
$questions = $game->getQuestions()->toArray();
shuffle($questions);
$randomQuestion = array_shift($questions);
如果有一個很大的問題,你可以做一個用0和n-1之間的隨機偏移量進行自定義查詢(n =你對這個遊戲有多少個問題)
我想你應該使用過濾器功能 –