我有一个问题,Yii2模型试图将空值保存为空,而不是空字符串。至于我没有null mysql列,我收到mysql错误。在Yii 1中有一个配置选项' nullConversion' => PDO :: NULL_EMPTY_STRING。我怎样才能在Yii2中实现同样的目标?只是希望ORM将空值保存为'',而不是null。感谢
答案 0 :(得分:2)
为了在Yii2中自动将mysql NULL转换为空字符串,请使用此 -
'db' => [
'dsn' => 'mysql:host=127.0.0.1;dbname=database',
'attributes' => [
PDO::ATTR_ORACLE_NULLS => PDO::NULL_TO_STRING
]
],
答案 1 :(得分:1)
您可以尝试使用其他方法来解决此问题:
public function rules() {
return [
...
[['field1', 'field2'], 'default', 'value' => ''],
...
这样,您可以将某些字段默认为空字符串而不是空字符,而不会影响所有字段。
答案 2 :(得分:0)
默认情况下,Yii2不会将null
转换为空字符串。如果您不希望它自动将null转换为空字符串,那么:
null
方法之前,请检查您的代码并确保该字段包含save
。beforeSave
不应替换字段。PDO::NULL_TO_STRING
不应设置。另见this问题。
如果想要自动将null转换为空字符串,请在' db'中设置PDO::NULL_TO_STRING
。成分
'db' => [
'dsn' => 'mysql:host=127.0.0.1;dbname=database',
'attributes' => [
PDO::NULL_TO_STRING => true
]
],