我使用Symfony 2.4.2我有两个学说实体。实体名称:城市和城镇。Symfony2学说在查询中急切加载
关系结构:
城市 - >镇=一对多 镇 - >市=多对一
实体/ City.php
/**
* @ORM\OneToMany(targetEntity="Town", mappedBy="city")
*/
private $towns;
实体/ Town.php
/**
* @ORM\ManyToOne(targetEntity="City", inversedBy="towns")
* @ORM\JoinColumn(name="city_id", referencedColumnName="id")
*/
private $city;
Where In Query不在第二项和第三项中运行。
1-)镇=>市查询(工作)探查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();
2-)镇=>市查询(不工作)探查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);
3 - )城市=>城镇查询(不工作)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);
是究竟什么问题了吗?另外,为什么不使用'fetch'模式的注释?:'@ORM \ OneToMany(targetEntity =“Town”,mappedBy =“city”fetch =“EAGER”)' –
当我使用注释时,总是渴望加载器正在使用。我想打电话查询。 –