我在玩家和教练之间有 manyToMany 关系。每个球员都可以有很多教练,每个教练都可以有很多球员。
我想创建自定义查询以恢复与特定教练相关联的所有玩家,但我真的不知道该怎么做。
我真的需要在存储库中创建一个自定义查询,以恢复与特定教练相关联的所有玩家。
这是 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 中有$user->getId()
作为教练的所有玩家的SQL查询是什么?
我知道用文字做什么(
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 ......
答案 0 :(得分:1)
// PlayerRepository
public function findPlayersOfCurrentUser(User $coach)
{
return $this->createQueryBuilder("o")
->innerJoin("o.coaches", "c", "WITH", "c=:coach")
->setParameter("coach", $coach)
->getQuery()->getResult() ;
}
假设用户和教练使用别名coaches
和players
(复数,因为它们应该是)相关。