Php Symfony2在查询中加载

Php Symfony2在查询中加载,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我使用Symfony 2.4.2我有两个条令实体。实体名称:城市和城镇 关系结构: 城市->城镇=OneToMany 城镇->城市=manytone Entity/City.php /** * @ORM\OneToMany(targetEntity="Town", mappedBy="city") */ private $towns; Entity/Town.php /** * @ORM\ManyToOne(targetEntity="City", inversedBy="towns")

我使用Symfony 2.4.2我有两个条令实体。实体名称:城市和城镇

关系结构:

城市->城镇=OneToMany 城镇->城市=manytone

Entity/City.php

/**
 * @ORM\OneToMany(targetEntity="Town", mappedBy="city")
 */
private $towns;
Entity/Town.php

/**
 * @ORM\ManyToOne(targetEntity="City", inversedBy="towns")
 * @ORM\JoinColumn(name="city_id", referencedColumnName="id")
 */
private $city;
其中在查询中没有运行在第二和第三项中

1-)城镇=>城市查询(工作)档案器SS:

2-)城镇=>城市查询(不工作)档案器SS:

3-)城市=>城镇查询(不工作)档案器SS:


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

这是QueryBuilder版本:

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

你到底有什么问题?另外,为什么不为
fetch
模式使用注释呢?:
@ORM\OneToMany(targetEntity=“Town”,mappedBy=“city”fetch=“EAGER”)
当我使用注释时,总是使用EAGER loader。我想打电话询问。这是目前为止最好的答案!
$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);
$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);
$qb = $this->createQueryBuilder('city')
    ->addSelect('town')
    ->innerJoin('town.city', 'city');
$cities = $qb->getQuery()->getResult();