我想在将新记录插入数据库时将当前系统时间添加到数据库中,如“time_created”列中所示。 PHP的time()函数在yii2中没有支持。我想要yii2特定的时间功能,这将帮助我保存当前的时间戳。谁知道????
答案 0 :(得分:9)
Yii 2对此有特殊行为。只需将其附加到模型上即可。
将此项添加到您的模型behaviors()
方法:
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;
public function behaviors()
{
return [
// Other behaviors
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'time_created',
'updatedAtAttribute' => false,
'value' => new Expression('NOW()'),
],
];
}
答案 1 :(得分:6)
您还可以使用Yii2
formatter
,如下所示:
Yii::$app->formatter->asTimestamp(date('Y-d-m h:i:s')); //1410488596
Yii::$app->formatter->asDatetime(date('Y-d-m h:i:s')); //Sep 12, 2014, 2:21:56 AM
答案 2 :(得分:5)
也许这是旧的,但它可能会帮助其他人。在模型中添加以下代码。确保将createdAttribute
更改为您的属性。您还必须包括:
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'entry_date',
'updatedAtAttribute' => false,
'value' => new Expression('NOW()'),
],
];
}
答案 3 :(得分:5)
您可以使用 yii \ db \ Expression 来执行SQL函数
<?php
use yii\db\Expression;
$model->time_created = new Expression('NOW()');
$model->save();
答案 4 :(得分:1)
您可以简单地使用PHP的date()
函数 - date('Y-m-d H:i:s');
答案 5 :(得分:0)
有几种方法可以添加时间戳,我建议使用UNIX时间戳来处理时区。例如,在Google SQL实例中,您无法设置时区,而是设置偏移量,这意味着由于夏季/冬季时间,您需要每年更新两次偏移量。因为有人提到你也可以使用行为:
let bankRates = zip(amounts, rates).map(BankRate.init)
或者你可以简单地在插入之前添加,比如public function behaviors()
{
return [
[
'class' => AttributeBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => 'entry_date',
],
'value' => function ($event) {
return time();
},
],
];
}
,但是你会在每个$model->entry_date=time();
上执行此操作,那么行为是更好的选择。
当然,如果您想阅读格式化日期,可以使用:
INSERT
对于asDate格式化程序,您可以在这里阅读: http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asDate()-detail