(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 的关系)...
如何更新实体的 属性?
我想更新(添加/删除)组织实体的地址 属性。它是与地址实体的关系 (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 的关系)...