Symfony2 Doctrine Eager在查询中加载

Ahm*_*RAN 5 php symfony doctrine-orm

我使用Symfony 2.4.2我有两个Doctrine实体.名称:城市和城镇.

关系结构:

城市 - >城镇= OneToMany Town - > City = ManyToOne

实体/ City.php

/**
 * @ORM\OneToMany(targetEntity="Town", mappedBy="city")
 */
private $towns;
Run Code Online (Sandbox Code Playgroud)

实体/ Town.php

/**
 * @ORM\ManyToOne(targetEntity="City", inversedBy="towns")
 * @ORM\JoinColumn(name="city_id", referencedColumnName="id")
 */
private $city;
Run Code Online (Sandbox Code Playgroud)

其中In Query未在第二和第三项中运行.

1-)Town => City Query(Working)Profiler SS:http://prntscr.com/34lx9q

$query = $this->_entityManager->createQuery('SELECT town FROM PersonalSiteBundle:Town town');
$query->setFetchMode(
    'Personal\SiteBundle\Entity\Town',
    "city",
    \Doctrine\ORM\Mapping\ClassMetadata::FETCH_EAGER
);
$query->execute();
Run Code Online (Sandbox Code Playgroud)

2-)Town => City Query(Not Working)Profiler SS:http://prntscr.com/34ly4h

$query = $this->_entityManager->createQuery('SELECT town FROM PersonalSiteBundle:Town town');
$query->setFetchMode(
    'Personal\SiteBundle\Entity\Town',
    "city",
    \Doctrine\ORM\Mapping\ClassMetadata::FETCH_EAGER
);
$query->execute(array(),Query::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)

3-)City => Town Query(Not Working)Profiler SS:http://prntscr.com/34ly4h

$query = $this->_entityManager->createQuery('SELECT city FROM PersonalSiteBundle:City city');
$query->setFetchMode(
    'Personal\SiteBundle\Entity\City',
    "towns",
    \Doctrine\ORM\Mapping\ClassMetadata::FETCH_EAGER
);
$query->execute(array(),Query::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)

got*_*oto 7

如果要在存储库中执行此操作,可以执行 JOIN 并将资源添加到所选对象。

这是 QueryBuilder 版本:

$qb = $this->createQueryBuilder('city')
    ->addSelect('town')
    ->innerJoin('town.city', 'city');
$cities = $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)