Doctrine DQL停止急切加载一对多

时间:2017-12-12 21:40:21

标签: php symfony doctrine-orm doctrine

使用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

先谢谢你。

0 个答案:

没有答案