我试图通过原则防止空字符串插入 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你也必须在逻辑上定义)。
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消