我有一个时间戳行为(yii2),看起来像这样(取自用户指南示例)......
public function behaviors()
{
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'value' => new Expression('NOW()'),
],
];
}
但使用PHP DateTime表达式是不是更好......
'value' => (new /DateTime('NOW'))->format('Y-m-d H:i:s')
对我来说似乎最好使用一个时钟而不是两个时钟(如果数据库服务器是独立的,时间不同步,这是不可能的。)特别是如果我在我的代码中使用DateTime检查其他条件。
哪种方法更好,为什么?
答案 0 :(得分:1)
Expression
类在SQL查询中创建了一个DBMS函数,无论您在列中使用哪种日期类型(或格式,可以强制某些DBMS中的日期格式),它都可以正常工作。如果更改行为的值,则应注意列的格式和类型是否匹配,否则有时会出错。