我知道这个查询工作就像一个护身符:
$result = $this->getEntityManager()->createQueryBuilder()
->select('banner','customer')
->from("MyBundle:Banner", 'banner')
->innerJoin('banner.customer', 'customer')
->getQuery()
->getResult();稍后,在视图中,我可以迭代并打印{{banner.name}}和{{banner.customer.name}},而无需对数据库进行额外的查询。
但是,相同的查询在innerJoin上做了一点更改:
$result = $this->getEntityManager()->createQueryBuilder()
->select('banner','customer')
->from("MyBundle:Banner", 'banner')
->innerJoin('MyBundle:Customer', 'customer', 'WITH', 'customer.id = banner.customer')
->getQuery()
->getResult();
foreach ($result as $e)
echo get_class($e).'<br/>';
die(1);此打印:
MyBundle\Entity\Banner
Proxies\__CG__\MyBundle\Entity\Customer
MyBundle\Entity\Banner
MyBundle\Entity\Banner
Proxies\__CG__\MyBundle\Entity\Customer
MyBundle\Entity\Banner
MyBundle\Entity\Banner
Proxies\__CG__\MyBundle\Entity\Customer
MyBundle\Entity\Banner所以,如果我迭代这个结果,期望得到一个MyBundle\Entity\Banner对象,我就会遇到麻烦,所以:
这是像第二个示例一样执行innerJoin的预期结果吗?
是否需要额外的function call、syntax或doctrine/symfony setup才能让它像第一个示例一样工作?
谢谢
发布于 2013-12-07 01:50:39
使用双向oneToMany并从innerJoin调用中删除WITH:
Customer:
type: entity
oneToMany:
banners:
targetEntity: Banner
mappedBy: customer
Banner:
type: entity
manyToOne:
customer:
targetEntity: Customer
inversedBy: banners
joinColumn:
name: customer_id
referencedColumnName: idhttps://stackoverflow.com/questions/20430078
复制相似问题