【问题标题】:How to POST on 3 level with JSONLD & Hydra (Symfony API)如何使用 JSONLD 和 Hydra(Symfony API)在 3 级上发布
【发布时间】:2016-02-18 11:25:27
【问题描述】:

我实际上正在开发一个 Symfony REST API 并为进一步的项目做一些测试,我需要你的帮助。

我有一个实体联系人,它有一个 MoyenCommunication 数组(只有一个 id 的抽象类)。 我有 en Entity Telephone,它继承自 MoyenCommunication 并包含一个独特的属性“numero”。

 Contact -> ($moyenComms)[Telephone->numero]

我想测试我的 API 并直接添加一个带有 MoyenCommunication 的联系人,该联系人是 Telephone,它的“numero”。

这是我尝试发布的 Json-LD:

{
"nom": "Nomgfdg",
"prenom": "Prenomgfdgd",
"dateNaissance": "2016-02-16",
"amiDepuis": "2016-02-16",
"moyensComm": [
    {
        "@type": "Telephone",
        "numero": "100009"
     }
     ]
}

这是回复:

 Cannot create an instance of ContactBundle\\Entity\\MoyenCommunication from serialized data because it is an abstract resource

这是我的 MoyenCommunication 映射:

    inheritanceType: JOINED
discriminatorColumn:
    name: type
    type: integer
discriminatorMap:
    1: Telephone

我真的不知道我做错了什么,所以我需要你的帮助。 我已经用谷歌搜索了,但没有任何好的结果。 谢谢你。 鲍里斯

【问题讨论】:

    标签: php api symfony json-ld hydra-core


    【解决方案1】:

    错误很明显:

    Cannot create an instance of ContactBundle\Entity\MoyenCommunication from serialized data because it is an abstract resource
    

    您需要对资源使用非抽象类。创建新类女巫将扩展 MoyenCommunication 并将其用于您的资源表示。

    【讨论】:

    • 我已经尝试使用从 MoyenCommunication 扩展的 Telephone(查看我的查询中的代码),实际上我不知道它为什么要尝试实例化 MoyenCommunication。
    • 但是moyensComm仍然是抽象类ContactBundle\Entity\MoyenCommunication的类型。不可能。看起来序列化器与 Doctrine 鉴别器功能不兼容。
    • 在这里查看 DunglasApiBundle 的抽象类的外观。它通过了 bundle github.com/dunglas/DunglasApiBundle/blob/… 中的 fetch/create/update/ 测试,所以它应该没问题。也许这会给你一些提示。
    • 所以我的联系人需要有“电话”而不是“moyensComm”?这不是我需要的,因为对我来说,使用 moyensComm 数组比从 MoyenCommunication 搜索每个继承要简单。
    • 好的,现在 MoyenCommunication 不再是抽象的了,但我尝试发布 { "nom": "Nomgfdg", "prenom": "Prenomgfdgd", "dateNaissance": "2016-02-16", "amiDepuis": "2016-02-16", "moyensComm": [ { "@type": "Telephone", "type": "1", "numero": "100000009" } ] } 它告诉我它不能在 MoyenCommunication 中插入类型(null)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多