0

是否有可能/如何使 ZF2DoctrineObject水合器将其输出作为嵌套数组而不是具有嵌套实体对象的数组提供?

以便

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(...))时,我得到一个元素bar类型为的数组Bar

在下一步中(实际上是之后的几次调用),这个结果被传递给Zend\View\Renderer\JsonRenderer#render(...),然后传递给Zend\Json\Json::encode(...),它在内部执行json_encode(...).

所以foo[bar]过滤掉的值和输出看起来像:

{
    "id": "123",
    "title": "FooTitle",
    "bar": {}
}
4

1 回答 1

0

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

于 2015-07-30T20:05:08.250 回答