我有一个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.
发布于 2013-07-01 01:53:25
// PlayerRepository
public function findPlayersOfCurrentUser(User $coach)
{
return $this->createQueryBuilder("o")
->innerJoin("o.coaches", "c", "WITH", "c=:coach")
->setParameter("coach", $coach)
->getQuery()->getResult() ;
}假设用户和教练是相关的,使用别名coaches和players (复数,它们应该是)。
https://stackoverflow.com/questions/17393242
复制相似问题