学说实体验证是否足够?

Is doctrine Entity validation enough?

我有一个已经有约束的实体 class:

/**
* @ORM\Column(type="string", length=255)
*/
private $X;

/**
* @ORM\Column(type="integer")
*/
private $Y;

在我的控制器中,我从表单中获取 post 数据并在实体上使用 setMethods class:

$property = new PropertyEntity();
$property->setX($request->request->get('X'));
$property->setY($request->request->get('Y'));

下一步 - 保存到数据库。

我需要对 post 数据进行额外验证吗?我虽然需要使用验证库,但我不确定它是否只会增加不必要的开销,因为“@ORM”已经是表单类型,并且已经在进行一些验证。 任何一般想法如何以及在哪里编写验证?(伪代码就足够了)

好问题! ORM 映射将 PHP class 映射到学说元数据(模型)。 断言是一种验证从表单 (View/Controller) 接收到的对象的机制。

这意味着您可以对不是实体的对象使用断言,或者您不能在 formType 中使用映射字段

您可以在字段的注释中进行验证。示例:

/**
* @Assert\NotBlank
* @ORM\Column(type="string", length=255)
*/
private $X;
    
/**
* @Assert\NotBlank
* @ORM\Column(type="integer")
*/
private $Y;

别忘了补充: 使用 Symfony\Component\Validator\Constraints 作为断言;

此 link 中有更多验证约束: https://symfony.com/doc/current/validation.html#basic-constraints