是否有可能 / 如何使ZF2 DoctrineObject
hydrator将其输出提供为嵌套数组而不是具有嵌套实体对象的数组?
所以,那个
Array
(
[id] => 123,
[title] => FooTitle,
[bar] => Array
(
[id] => 567,
[title] => BarTitle
)
)
而不是那个
Array
(
[id] => 123,
[title] => FooTitle,
[bar] => Bar Object
(
[id] => 567,
[title] => BarTitle
)
)
其他信息/背景:
在ZF2应用程序中,我正在使用Doctrine并拥有实体Foo
和Bar
。他们之间存在OneToOne
关系 - Foo
has a
Bar
:
{
"id": "123",
"title": "FooTitle",
"bar": {
"id": "567",
"title": "BarTitle"
}
}
当我检索Foo
对象并将其传递给DoctrineModule\Stdlib\Hydrator#extract(...)
时(在我的应用程序中它已在ZF\Hal\Plugin#convertEntityToArray(...)
内完成),我得到一个元素{{ 1}}类型bar
。
在下一步(实际上稍后几次调用)中,此结果将传递到Bar
,然后传递到内部执行json_encode(...)
的Zend\View\Renderer\JsonRenderer#render(...)
。
因此,Zend\Json\Json::encode(...)
的值被过滤掉,输出如下:
foo[bar]
答案 0 :(得分:0)
DoctrineObject Hydrator的目的是从数组中水合对象或将对象提取到数组。如果您不想生成对象,则应使用Zend框架中提供的ArraySerializable水合器。