Php Symfony2在查询中加载
我使用Symfony 2.4.2我有两个条令实体。实体名称:城市和城镇 关系结构: 城市->城镇=OneToMany 城镇->城市=manytone Entity/City.phpPhp 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")
/**
* @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();