所以有一个表单和非必填字段,比如“first_name”。当我将此字段留空时,我会收到错误消息,“Column 'first_name' cannot be null”,因为它确实不能为空。但是为什么Doctrine会将空字符串转换为NULL呢?
但我有两个问题:
1. 是否可以禁用此功能? 2. 您对此有什么看法?直到现在,当表单字段为空时,我通常插入空字符串,而不是NULL。但是...有人告诉我这是我们应该遵循的原则。然而,对我来说,NULL表示“没有值”,而''(空字符串)表示不同的含义——“有一个值,但它是空的”。您怎么看?
PS:如果有影响,我使用的是MySql。
编辑:
有一个类似的问题:Symfony2 forms interpret blank strings as nulls,但也许2016年有新的解决方案?
唯一有效的解决方案是接受的答案中提供的。
或者当你有设置setRecap函数时,你可以检查是否为空并设置你期望的值。
但是我有很多这样的字段,这似乎有些过度,必须有一个更简单的解决方案。
附言:我没有尝试Thomas Decaux在接受的答案下面的答案,因为它对我来说似乎是hacky。
但我有两个问题:
1. 是否可以禁用此功能? 2. 您对此有什么看法?直到现在,当表单字段为空时,我通常插入空字符串,而不是NULL。但是...有人告诉我这是我们应该遵循的原则。然而,对我来说,NULL表示“没有值”,而''(空字符串)表示不同的含义——“有一个值,但它是空的”。您怎么看?
PS:如果有影响,我使用的是MySql。
编辑:
有一个类似的问题:Symfony2 forms interpret blank strings as nulls,但也许2016年有新的解决方案?
唯一有效的解决方案是接受的答案中提供的。
或者当你有设置setRecap函数时,你可以检查是否为空并设置你期望的值。
public function setRecap($recap) {
if(!isset($recap)) {
$this->recap = ''
} else {
$this->recap = $recap;
}
}
但是我有很多这样的字段,这似乎有些过度,必须有一个更简单的解决方案。
附言:我没有尝试Thomas Decaux在接受的答案下面的答案,因为它对我来说似乎是hacky。
private $userName = '';
,或者protected $userName = '';
。 - cezar