所以我有数据库列的日期,但是当用户将此部分留空并更新记录时,它将保存在数据库中作为1970/01/01。
现在,当我将columng设为null = no和default = none时,这不起作用。
在我的代码中,我检查该值是否为null(这就是strtotime()函数失败的原因)。如果为null,我尝试将值保存为''。
$niceDate = $this->judgement_date;
$databaseDate = date("Y-m-d", strtotime($niceDate));
if(is_null($databaseDate)){
$databaseDate == '';
}
$this->judgement_date = $databaseDate;
我是否仍然在字段中保存''的空值,或者日期类型是否意味着它必须具有日期格式的值?
答案 0 :(得分:2)
假设$this->judgement_date
位于a valid date format ,$databaseDate
代码永远不会为strtotime()
,date()
始终返回false
值(包括$niceDate
)。您需要检查==
是否具有有效值,如果不是则使用空字符串。
您还使用=
代替 $niceDate = $this->judgement_date;
if(empty($databaseDate)){ // null is empty
$databaseDate = '';
}
else {
$databaseDate = date("Y-m-d", strtotime($niceDate));
}
$this->judgement_date = $databaseDate;
作为赋值运算符,这是PHP将不报告的逻辑错误。
{{1}}