如何在 Yii 中将日期设置为 NULL?

2022-08-31 00:38:52

我有一个日期列,通常将值作为.它在模型中的验证规则是这样的:dd.MM.yyyyrules()

array('start, end', 'date', 'format' => 'dd.MM.yyyy'),

我正在从CSV文件填充数据库,如果CSV记录为空,我希望能够将日期设置为(即无)。所以,我正在做:NULL

if (empty($csv_data)) {
  $user->start = new CDbExpression('NULL');
} else {
  $user->start = $csv_data;
}

但是我收到一个错误,指出日期格式无效。为什么?

CDateValidator 文档说该属性在默认情况下为 true,因此它应该能够将其设置为 ,对吗?请注意,如果我只是将字符串评估为日期,它会将其转换为时间戳,而不是。allowEmptyNULL""0000-00-00 00:00:00NULL


答案 1

在模型中 :rules()

array('start, end', 'date', 'format' => 'dd.MM.yyyy'),
array('start, end', 'default', 'setOnEmpty' => true, 'value' => null),

if (empty($csv_data)) {
  $user->start = null;
} ...

也应该这样做。


答案 2

对此的简单修复是不要在创建期间设置值:

if (!empty($csv_data)) {
  $user->start = $csv_data;
}

这样,日期将不会被设置,因此显示为空,这也通过了验证。


推荐