我试图通过 Doctrine 防止空字符串插入 MySQL 数据库,
我这样做了:
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank() ( or NotNull() )
*/
private $name;
插入空输入后值时我仍然没有错误,
最佳答案
您需要实现 your own custom entity validation . Assert
Validator
使用注释组件,但不是由 Doctrine 。
例如,您可以这样做:
/**
* @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
所以在数据库级别很明显名称不能是null
,以提高数据完整性。
(您还必须从逻辑上定义 ThingWithNoNameException
)。
关于php - 如果属性具有空字符串值,如何使 Doctrine 拒绝实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57508360/