2013-06-30 45 views
0

球員教練之間的多對多關係。每個球員可以有很多教練,每個教練可以有很多球員。Syfmony2 - 庫中的許多自定義查詢到很多關係

我想創建自定義查詢來恢復所有連接到特定教練的球員,但我真的不知道該怎麼做。

我真的需要在一個存儲庫中創建一個自定義查詢,該存儲庫將恢復與特定教練關聯的所有玩家。

這裏是我的倉庫功能的OSC \用戶畫布\實體\ PlayerRepository

public function findPlayersOfCurrentUser($user) { //The user id is the id linked to the player 
     return $this->_em->createQuery(' 


     '); 

    } 

我所有的許多一對多關係的工作,所以我有一個表(名爲user_player)這樣將生成以下:

user_id  player_id 
    1   1 

最後,我的問題是:什麼是SQL查詢選擇的所有玩家OSCUserBundle:玩家作爲教練有$user->getId()

我知道該怎麼用語言(

SELECT all the players from OSCUserBundle:Player WHERE id IN (SELECT all the player_id FROM user_player WHERE user_id = $user->getId() 

),但不通過的createQuery或createQueryBuilder做...

回答

1
// PlayerRepository 
public function findPlayersOfCurrentUser(User $coach) 
{ 
    return $this->createQueryBuilder("o") 
     ->innerJoin("o.coaches", "c", "WITH", "c=:coach") 
      ->setParameter("coach", $coach) 
     ->getQuery()->getResult() ; 

} 

假定該用戶和教練都使用別名coachesplayers(相關複數,因爲他們應該是)。

+0

您的意思是「假設那個球員和教練」,而不是用戶和教練,因爲用戶和教練在我的情況下是一樣的嗎? – CoachNono

+0

當我把你的代碼,它給了我以下錯誤:預期參數的類型「Doctrine \ ORM \ QueryBuilder」,「數組」 – CoachNono

+0

請更新您的問題與玩家和教練之間的關係。我知道他們是一樣的,但只是做到這一點,我將在後面解釋爲什麼。 – Zeljko

相關問題