【发布时间】:2015-07-28 10:35:14
【问题描述】:
当我在 Doctrine 中执行这样的操作时:
$qb = $doctrine
->getRepository('EntityA')
->createQueryBuilder('a')
->addSelect('b')
->join('EntityB', 'b', 'WITH', 'a.b = b')
->getQuery()
->getResult()
我得到一个如下所示的数组:
array(0 => EntityA,
1 => EntityB,
2 => EntityA,
4 => EntityB)
事实上,我得到了 2 个结果行,但是一个大小为 4 的数组。这使得迭代它以在模板中显示几乎是不可能的。
我想要这样的结果:
array(0 => array(EntityA, EntityB),
1 => array(EntityA, EntityB))
当然,我可以在 EntityA 上创建一个引用 EntityB 的映射。但即使有可能改变加载行为,LAZY、EAGER 等,也可能希望有可能在运行中创建这样的关系。
例如:
在包含大量实体的概览中,需要加载EAGER 以防止查询过多。但是当我只想显示一个Entity并且不需要额外的数据时,LAZY加载更可取。
【问题讨论】:
标签: php symfony doctrine-orm