我正在尝试创建一个包含嵌套的Gender对象的Customer对象。
创建客户时,我想传递现有的性别。 ->问题是Api Plateform试图创建我赋予它的嵌套Gender。
我不想使用IRI,而是完全使用嵌套对象。
因此,我使用规范化和非规范化组创建了“客户”实体。
客户实体:
/**
* @ApiResource(
* normalizationContext={"groups"={"customer.read"}},
* denormalizationContext={"groups"={"customer.create"}}
* )
* @ORM\Table(name="customers")
* @ORM\Entity(repositoryClass="App\Repository\CustomerRepository")
*/
class Customer
{
...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gender", inversedBy="customers", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
* @Groups({"customer.read","customer.create"})
*/
private $gender;
性别实体:
/**
* @ApiResource(
* normalizationContext={"groups"={"gender.read"}},
* denormalizationContext={"groups"={"gender.create"}}
* )
* @ORM\Table(name="genders")
* @ORM\Entity(repositoryClass="App\Repository\GenderRepository")
*/
class Gender
{
/**
* @ORM\Column(type="guid")
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
* @Groups({"gender.read","customer.read","customer.create"})
*/
private $id;
/**
* @ORM\Column(type="string",unique=true, length=20)
* @Groups({"gender.read","gender.create","customer.read","customer.create"})
*/
private $genderName;
/**
* @ORM\Column(type="string",unique=true, length=3)
* @Groups({"gender.read","gender.create","customer.read","customer.create"})
*/
private $genderCode;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Customer", mappedBy="gender")
*/
private $customers;
每次我在/ api / customers上发送POST
使用:
{
"lastname": "string",
"firstname": "string",
...
"gender": {
"genderName": "Test",
"genderCode": "T"
}
}
每次都会创建性别。.
我如何对ApiPlateform说“不创建嵌套对象,而是使用现有的pls”? 有什么办法解决吗?
非常感谢您。 托尼,
答案 0 :(得分:0)
您必须将IRI添加到性别中。
{
"lastname": "string",
"firstname": "string",
...
"gender": "/genders/id"
}