如果属性具有空字符串值,如何让 Doctrine 拒绝实体?

我试图通过原则防止空字符串插入 MySQL 数据库,


我这样做了:


 /**

   * @ORM\Column(type="string", length=255)

   * @Assert\NotBlank() ( or NotNull() )

   */

    private $name;

插入空的输入后值时我仍然没有错误,


MMMHUHU
浏览 145回答 1
1回答

UYOU

您需要实现自己的自定义实体验证。该Assert注释是由使用的Validator组件,而不是由学说。例如,您可以执行以下操作:/** * @Entity * @HasLifecycleCallbacks */class Thing{    /**     * @ORM\Column(type="string", length=255, nullable=false)     */    private $name;    /**     * @PrePersist @PreUpdate     */    public function assertNotEmptyName() {        if(empty($this->name)) {             throw new ThingWithNoNameException();        }    }}在创建或更新Thing实体之前assertNotEmptyName()将被调用,如果name为空则会抛出异常。此外,为了更好的数据完整性,我已添加,nullable=false因此在 DB 级别很清楚名称不能null为 。(ThingWithNoNameException你也必须在逻辑上定义)。
打开App,查看更多内容
随时随地看视频慕课网APP