【问题标题】:How do I configure apigility to use Doctrine's MongoDB ODM?如何配置 apigility 以使用 Doctrine 的 MongoDB ODM?
【发布时间】:2014-05-31 21:14:16
【问题描述】:

我正在尝试将 apigility 与教义的 mongodb odm 一起使用。
我已经设置了我的文档并按照应有的方式配置了学说模块。
我已经(手动)插入了一个文档到 mongo,并定义了一个基于代码的 rest 服务,它的“fetch”方法(在资源类中)返回文档的存储库“find”返回值。

当我调用端点(没有 ID)时,我得到了我插入的单个文档的数组,但它没有正确显示:

{
  "_links": {
    "self": {
      "href": "http://localhost:8888/posts"
    }
  },
  "_embedded": {
    "posts": [
      {
        "\u0000MyApp\\Document\\Post\u0000id": "5389db47075000812e55bd7d",
        "\u0000MyApp\\Document\\Post\u0000title": "My Post",
        "\u0000MyApp\\Document\\Post\u0000description": "This is my post",
        "_links": {
          "self": {
            "href": "http://localhost:8888/posts/1"
          }
        }
      }
    ]
  },
  "total_items": 1
}

这个输出有(至少)两个问题:

  1. 每个属性的键都有奇怪的格式。它包含带有文档名称的完整命名空间,以及 NULL 的 utf8 代码
  2. “self”链接未使用正确的 id(它使用数字 1 而不是 mongodb 自动生成的 id)。

出了什么问题/遗漏了什么?

【问题讨论】:

  • 您确定您的App\Document\Post 实体在zf-rest 的配置(在控制器的entity_name 键下)和zf-halmetadata_map 配置中声明吗?如果一切正常,可以更改实体的水合器(zf-hal.metadata_map.App\Document\Post.hydrator,如果没有,则zf-hal.renderer.default_hydrator)和/或可以使用 ZF2 的HydratorManager 设置自定义水合策略。
  • 您找到解决方案了吗?

标签: mongodb doctrine-orm zend-framework2 laminas-api-tools


【解决方案1】:

当 php 使用 ObjectProperty (\Zend\Stdlib\Hydrator\ObjectProperty ) hydrator 填充对象时会发生这种情况。在 Apigility 中,如果您不指定 hydrator,那么它将回退到 ObjectProperty hydrator(Default),这似乎是你的输出的情况。 请改用 Classmethods hydrator (\Zend\Stdlib\Hydrator\ClassMethods)。

【讨论】:

    猜你喜欢
    • 2015-04-10
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2011-12-28
    • 2016-08-26
    • 2017-08-14
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多