【发布时间】:2017-04-03 03:46:56
【问题描述】:
在我的 Symfony2 控制器中,我有两个查询:
就像在这个例子中:
$object = $this->getDoctrine()->getManager()
->createQuery('SELECT PARTIAL o.{id,name,field1}
FROM SomeBundle:SomeEntity o
WHERE o.id = :objectId')
->setParameter('objectId', $objectId)
->getResult();
$objects = $this->getDoctrine()->getManager()
->createQuery('SELECT PARTIAL o.{id,name,field1, field2}
FROM SomeBundle:SomeEntity o ')
->getResult();
我在集合$objects 中收到的效果是SomeBundle:SomeEntity 对象的集合,除了我收到到变量$object 的那个我收到代理对象的对象。
如果我输出$objects 集合,并且对于我想要打印包含字段的输出的每个元素:名称、字段1、字段2,我会收到该对象的字段2 的空值。事实上,如果我在与这个一起启动的任何其他控制器中得到这个$object,那么 field2 在每个对该对象的引用上也是空的。
例如,如果我想将每个对象显示为:
name field1 field2
我得到$objects 的以下数组:
nameExample field1Example field2Example
nameExample field1Example field2Example
nameExample field1Example
nameExample field1Example field2Example
nameExample field1Example field2Example
第三行是$object。
如果我在第一个查询中得到 field2,它在第二个查询的 getResult 上也可见。但这使我可以控制在整个请求中为任何实体对象接收的所有字段。
- 我做错了什么?
- 如何避免这种影响?我仍然想处理不使用多维数组的对象(至于
HYDRATE_ARRAY) - 有没有办法强制教义总是使用实体对象而不是代理对象?
提前谢谢你。
【问题讨论】:
标签: symfony doctrine-orm