symfony2表单中的空白字段有些奇怪

Shi*_*n S 3 forms symfony doctrine-orm

当我发送一个带有空白字段的表单时,我收到错误SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'image' cannot be null.我发现修复它的唯一方法是在实体文件中创建一个默认值:

 * @ORM\Column(type="string", length=100)
 */
protected $image="";
Run Code Online (Sandbox Code Playgroud)

并像这样更改setter:

public function setImage($image){
 if(!isset($image)) {
//its really empty but it works only in this way     
}
     else {
    $this->image = $image;
    }  
Run Code Online (Sandbox Code Playgroud)

我认为这是一个很大的问题...这有什么解释吗?还有另一种方法吗?}

Mat*_*att 7

如果image不需要该字段,则可以将其设置为nullableDoctrine将知道该字段并将该列设置为可为空.

这样,不会违反约束,因为该字段可以为null.要使字段可以使用Doctrine注释构建为空,只需添加nullable = true如下ORM\Column定义:

@ORM\Column(type="string", length=100, nullable=true)
Run Code Online (Sandbox Code Playgroud)

默认情况下,所有列都是nullable=false这样,当尝试在其中保留空值时,它们将抛出一个constaint验证异常.

问候,
马特