>我试图通过原则防止空字符串插入MySQL数据库,
我这样做了:
/**
* @ORMColumn(type="string", length=255)
* @AssertNotBlank() ( or NotNull() )
*/
private $name;
插入空输入帖子值时我仍然没有收到任何错误,
您需要实现自己的自定义实体验证。Assert
注释由Validator
组件使用,但不由教义使用。
例如,您可以执行以下操作:
/**
* @Entity
* @HasLifecycleCallbacks
*/
class Thing
{
/**
* @ORMColumn(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
(。