我有一个Order对象和一个OrderDetails。我想在一个POST调用中发送带有OrderDetails的order对象。但是ApiPlatform从不验证OrderDetails实体。我只是得到一个数据库错误,字段数量不能为空。我在这里做错了什么?
这是我的Order entity。
/**
* @ORM\Entity(repositoryClass=OrderRepository::class)
* @ORM\Table(name="`tblInternetAuftraege`")
* @Vich\Uploadable
*/
#[ApiResource(
collectionOperations: [
'POST' => [
'input_formats' => [
'json' => ['application/json'],
'multipart' => ['multipart/form-data'],
],
'normalization_context' => ['groups' => ['ORDER_POST'],'swagger_definition_name' => 'POST'],
'denormalization_context' => ['groups' => ['ORDER_POST'],'swagger_definition_name' => 'POST']
],
'GET' => [
'normalization_context' => ['groups' => ['ORDER_READ'],'swagger_definition_name' => 'READ'],
'denormalization_context' => ['groups' => ['ORDER_READ'],'swagger_definition_name' => 'READ']
]
],
itemOperations: [
'PUT' => [
'security' => 'is_granted(\'ORDER_PUT\', object)',
'normalization_context' => ['groups' => ['ORDER_PUT'],'swagger_definition_name' => 'PUT'],
'denormalization_context' => ['groups' => ['ORDER_PUT'],'swagger_definition_name' => 'PUT']
],
'PATCH' => [
'security' => 'is_granted(\'ORDER_PATCH\', object)',
'normalization_context' => ['groups' => ['ORDER_PUT'],'swagger_definition_name' => 'PATCH'],
'denormalization_context' => ['groups' => ['ORDER_PUT'],'swagger_definition_name' => 'PATCH']
],
'GET' => [
'normalization_context' => ['groups' => ['ORDER_READ'],'swagger_definition_name' => 'READ'],
'denormalization_context' => ['groups' => ['ORDER_READ'],'swagger_definition_name' => 'READ']
]
],
)]
#[OrangefluidAssert\OrderData]
class Order {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="ID",options={"default":0})
*
* @Groups({"ORDER_READ","ORDER_PUT", "ORDER_POST"})
*/
private int $id = 0;
/**
* @ORM\OneToOne(targetEntity=OrderDetails::class, mappedBy="order", cascade={"persist","remove"})
* @Assert\NotBlank()
* @Groups({"ORDER_READ","ORDER_PUT", "ORDER_POST"})
*/
private OrderDetails $details;
}这里是OrderDetails entity
/**
* @ORM\Entity
* @ORM\Table(name="`tblInternetTDSB`")
*/
#[ApiResource(
collectionOperations: ['GET'],
itemOperations: ['GET']
)]
class OrderDetails {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="ID")
*
* @Groups({"ORDER_READ","ORDER_PUT", "ORDER_POST"})
*/
#[ApiProperty(
writable: false
)]
private ?int $id = 0;
/**
* @var int
* @ORM\Column(type="integer", name="Anzahl", nullable=false)
* @Assert\NotBlank()
* @Groups({"ORDER_READ","ORDER_PUT", "ORDER_POST"})
*/
#[ApiProperty(
required: true,
description: 'Die gewünschte Bestellmenge',
example: '12'
)]
private int $quantity;}
发布于 2021-09-28 06:57:45
发现我做错了什么。这是我的解决方案。我必须将@Assert\Valid()设置为我的$orderDetails。
https://stackoverflow.com/questions/69357005
复制相似问题