0

我在球员教练之间建立了多对多的关系。每个球员可以有很多教练,每个教练可以有很多球员。

我想创建自定义查询来恢复与特定教练相关联的所有球员,但我真的不知道该怎么做。

我真的需要在存储库中创建一个自定义查询,以恢复与特定教练相关联的所有球员。

这是我在OSC\User\Entity\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

最后,我的问题是:选择OSCUserBundle:Player中所有作为 Coach的玩家的 SQL 查询是什么? $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...

4

1 回答 1

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

}

假设用户和教练使用别名coachesplayers(复数,因为它们应该是)相关。

于 2013-07-01T01:53:25.807 回答