如何使用ZF2中的DoctrineObject Hydrator获取嵌套数组输出?

时间:2015-07-29 13:06:44

标签: zend-framework2 doctrine hal-json

是否有可能 / 如何使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并拥有实体FooBar。他们之间存在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]

1 个答案:

答案 0 :(得分:0)

DoctrineObject Hydrator的目的是从数组中水合对象或将对象提取到数组。如果您不想生成对象,则应使用Zend框架中提供的ArraySerializable水合器。