如何在Yii 1.x的CDbMigration
中正确使用MySQL的FROM UNIXTIME
?
我已经借用了解决方案,将当前时间作为时间戳转换为MySQL的DateTime
字段this answer并且只打印它时:
echo 'FROM_UNIXTIME('.$base.')'."\n";
echo 'FROM_UNIXTIME('.$sixDaysLater.')'."\n";
一切似乎都很好:
FROM_UNIXTIME(1418223600)
FROM_UNIXTIME(1418742000)
但是,当我尝试使用相同的技术作为迁移的一部分时:
$this->insert('contents', array
(
'author_id'=>1,
'type'=>5,
'status'=>1,
'category'=>1,
'title'=>'title',
'body'=>'body',
'creation_date'=>'FROM_UNIXTIME('.$base.')',
'modification_date'=>'FROM_UNIXTIME('.$base.')',
'availability_date'=>'FROM_UNIXTIME('.$sixDaysLater.')',
'short'=>'short'
));
这失败了 - 也就是说,迁移很顺利,但我可以在phpMyAdmin中看到,此记录的相关字段已填充零(0000-00-00 00:00:00
),而不是预期值。
我错过了什么?是吗,因为insert
中的值正在编码/转义?
答案 0 :(得分:2)
您可以改为使用CDBExpression:
new CDbExpression("NOW()");
我的意思是:
'creation_date'=>new CDbExpression("NOW()")
或者,如果您想使用FROM UNIXTIME
,您也可以这样做。
CDbExpression 表示不需要转义的DB表达式。