I have a date column that usually takes values as dd.MM.yyyy
. Its validation rule in the model's rules()
is this:
array('start, end', 'date', 'format' => 'dd.MM.yyyy'),
I'm populating the database from a CSV file, and I'd like to be able to set the date to NULL
(i.e. nothing) if the CSV record is empty. So, I'm doing:
if (empty($csv_data)) {
$user->start = new CDbExpression('NULL');
} else {
$user->start = $csv_data;
}
But I get an error that the date format is invalid. Why is that?
The CDateValidator
documentation says that the allowEmpty
property is true by default, so it should be able to set this to NULL
, right? Note that if I just assing the ""
string to the date, it'll convert it to a 0000-00-00 00:00:00
timestamp, which is not NULL
.
in model rules()
:
array('start, end', 'date', 'format' => 'dd.MM.yyyy'),
array('start, end', 'default', 'setOnEmpty' => true, 'value' => null),
also,
if (empty($csv_data)) {
$user->start = null;
} ...
should do the trick too.
The trivial fix for this is not to set the value at all during creation:
if (!empty($csv_data)) {
$user->start = $csv_data;
}
This way, the date will not be set and thus appear as empty, which also passes validation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With