2017-01-17 59 views
-1

我在我的學說實體中與實體問題和遊戲有多對多的關係。獲得symfony多對多關係的隨機結果

我希望得到一個遊戲的一個問題隨機

現在,我可以得到一個遊戲的問題與這個語法$game->getQuestions()但它不給我一個隨機的問題,它只是給我一個遊戲的所有問題

+0

我想你應該使用過濾器功能 –

回答

1

通常有兩種解決方案:

  1. 如果Game模式是不是一個大的問題提供的號碼,只需添加一個方法給它,並隨機挑選從問題ArrayCollection

  2. 如果有很多和你Game裏面有很多Question,那麼最好的辦法是寫一個自定義的Repository內自定義Query取得與您Game關聯的隨機問題。

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

0

不好的代碼,但工作:

假設您的問題是一個\Doctrine\Common\Collections\ArrayCollection

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

如果有一個很大的問題,你可以做一個用0和n-1之間的隨機偏移量進行自定義查詢(n =你對這個遊戲有多少個問題)