首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在APiPlatform中验证子实体

无法在APiPlatform中验证子实体
EN

Stack Overflow用户
提问于 2021-09-28 06:50:32
回答 1查看 26关注 0票数 0

我有一个Order对象和一个OrderDetails。我想在一个POST调用中发送带有OrderDetails的order对象。但是ApiPlatform从不验证OrderDetails实体。我只是得到一个数据库错误,字段数量不能为空。我在这里做错了什么?

这是我的Order entity

代码语言:javascript
复制
/**
 * @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

代码语言:javascript
复制
/**
 * @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;

}

EN

回答 1

Stack Overflow用户

发布于 2021-09-28 06:57:45

发现我做错了什么。这是我的解决方案。我必须将@Assert\Valid()设置为我的$orderDetails

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69357005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档