(API-PLATFORM) 如何一次更新一个 属性 实体

(API-PLATFORM) How can I update one property of an entity at a time

如何更新实体的 属性?

我想更新(添加/删除)组织实体的地址 属性。它是与地址实体的关系 (ManyToMany)。一个组织可以有一个或多个地址;一个地址可以有多个组织。

这是我的组织实体的摘录。

...
 * @ApiResource(
 *     iri="https://schema.org/Organization",
 *     routePrefix="/",
 *     shortName="Organisations",
 *     description="API Access to the Chafea Data Collector: Common : organisation Entity",
 *     collectionOperations={"GET", "POST"},
 *     itemOperations={"GET", "PUT", "PATCH"},
 *     attributes={
 *         "order"={
 *             "legalName",
 *             "acronym"
 *         }
 *     }
 * )
...
class Organisation extends AbstractEntity
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer", options={"comment":"Primary Key, Auto generated"})
     */
    private $id;
...
    /**
     * @var address the address (not mandatory) of an organisation
     *
     * @ORM\ManyToMany(targetEntity=Address::class, inversedBy="organisations")
     *
     * @ORM\JoinColumn(nullable=true).
     */
    private $address;
...
}

PUT 操作的 JSON 结构 (http://url-api/organisations/{id})。

{
  "legalName": "string",
  "acronym": "string",
  "address": [
    "string"
  ],
  "createdAt": "2020-10-29T13:01:20.637Z",
  "modifiedAt": "2020-10-29T13:01:20.637Z"
}

我是否必须检索整个数据集、更新地址数组的 IRI 并发回更新后的数据集 (PUT)?

http.get(url);
...
data = {
  "legalName": "My organisation",
  "acronym": "MYORG",
  "address": [],
  "createdAt": "2020-10-29T13:01:20.637Z",
  "modifiedAt": "2020-10-29T13:01:20.637Z"
}
...
data.address": ['/addresses/1', '/addresses/5']
...
http.put(url,data,headers);

也许我必须只为地址创建一个专用的 PUT 操作?

谢谢。

问题出在其他地方,ManyToMany 关系不是开箱即用的,它以一种方式工作(Address 正在创建与 Person 的关系,但是 Person 正在创建与 Address 的关系)...