为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MMMHUHU 2021-11-26 14:42:39
我试图通过原则防止空字符串插入 MySQL 数据库,我这样做了: /**   * @ORM\Column(type="string", length=255)   * @Assert\NotBlank() ( or NotNull() )   */    private $name;插入空的输入后值时我仍然没有错误,
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您需要实现自己的自定义实体验证。该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你也必须在逻辑上定义)。


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信