我有一个带有文本字段的表单,该字段映射到我的数据库中的非空字段(是遗留数据库,我无法更改此项)。
问题在于Symfony2始终将空文本字段设置为
有没有办法告诉Symfony2不要将空文本字段设置为
问题在于Symfony2始终将空文本字段设置为
NULL
,这会导致插入失败。有没有办法告诉Symfony2不要将空文本字段设置为
NULL
?首先在实体中默认设置空值
/**
* @ORM\Column(name="example", type="string", length=255, nullable=false)
*/
private $example = '';
关于你的问题,不幸的是,你描述的是Symfony已知的问题/错误,所以你需要覆盖被设置到setter函数中的值:
public function setExample($example = null) {
if (empty($example)) {
$example = '';
}
$this->example = $example;
}
null
。 - Hpatoio$example
是 false
或其他空值,直接类型比较可能会有问题,否则 Symfony 可能会再次向数据库发送 null
值。我将在编辑中引用一个已知的错误。 - sjagr$myEntity->setExample(null)
,我在数据库中仍然会得到null
。而这正是我不想要的。你同意吗? - Hpatoio= null
部分,则在尝试使用 $entity->setExample()
而没有值时(这应该是设置空值的有效调用),您将会收到错误提示。 empty()
比 is_null()
更好,因为它考虑了 false
、null
和 0
这些值,这些值在存储到数据库时可能会被强制转换为 null
。 - sjagr $builder->add('comment', TextareaType::class, [
'empty_data' => '',
'required' => false,
]);
* @ORM\Column(name="address", type="string", length=255, nullable=true)
。 - hous