使用Doctrine我想只返回一个对象和一些左连接。
但是,出于某种原因,Doctrine(使用DQL)只是继续加载我的所有数据。
class User {
/**
* @ORM\OneToMany(targetEntity="NAMESPACE\Entity\TeamUserGroup", mappedBy="user")
*
* @var array
*/
protected $groups;
}
然后,TeamUserGroup再次拥有多对一的:
class TeamUserGroup {
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="NAMESPACE\AuthBundle\Entity\User", inversedBy="groups")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*
* @var User
*/
private $user;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="NAMESPACE\TeamBundle\Entity\Team", inversedBy="groups")
* @ORM\JoinColumn(name="team_id", referencedColumnName="id", nullable=false)
*
* @var Team
*/
private $team;
}
这是我的DQL:
public function fetchUser()
{
$qb = $this
->createQueryBuilder('s')
->select('s')
->andWhere('s.email=(:email)')
->addSelect('groups')->leftJoin('s.groups', 'groups')
->setParameter('email', $parameterBag['email']);
try {
return $qb->getQuery()->getOneOrNullResult();
} catch (NonUniqueResultException $exception) {
}
}
由于某种原因,Doctrine只会加载每个关联。
所以我有这个结构:
// User Object
// All my Groups
// All the Teams of that Group
// All the Users in that team ...
我怎么能阻止这个(所以我只得到我的对象和左连接)。 这是我想要的结果:
// User Object
// All my Groups
先谢谢你。