Symfony 4 - 多断言困难

Symfony 4 - Multi assert difficults

在我的 symfony 项目中,我有一个具有此字段的实体:

/**
 * Solde
 * @ORM\Column(type="float", nullable=true)
 */
private $solde;

该字段可以为空、等于 0 或大于 0,但不能为负数。

所以我想知道如何组织该字段的断言?

我可以做这样的事情吗?

 /**
 * @Assert\!Negative
 */

否则我应该使用的断言是:

/ ** 
 * @Assert \ Null () 
 * @Assert\GreaterThanOrEqual(0)
 * / 

但如果我同时使用这两个,可能会出现问题,因为一个必须确保该值为零,另一个必须验证它是正数或等于0

如果您使用的是 Symfony 4.3+,您可以使用 PositiveOrZero:

/**
 * @Assert\PositiveOrZero
 */

如果将它与 nullable=true 结合使用,所有正数 0null 都将有效。

对于旧版本的 Symfony,您可以使用:

/**
 * @Assert\GreaterThanOrEqual(0)
 */

再次使用nullable=true,你会得到同样的效果。

或者您可以使用其逻辑集创建自己的验证器 enter link description here