【发布时间】:2014-03-27 17:18:32
【问题描述】:
我使用 Symfony 2.4.2 我有两个 Doctrine Entity。实体名称:城市和城镇。
关系结构:
城市 -> 城镇 = OneToMany 城镇 -> 城市 = ManyToOne
实体/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-) 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();
2-) Town=>城市查询(不工作)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);
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);
【问题讨论】:
-
您的问题到底是什么?另外,为什么不为
fetch模式使用注释?:@ORM\OneToMany(targetEntity="Town", mappedBy="city" fetch="EAGER") -
当我使用注解时,总是使用急切的加载器。我想打电话查询。
标签: php symfony doctrine-orm