我尝试使用yii2框架开发应用程序,我使用beforeSave事件来处理createdAt和updatedAt with time()函数,这个方法是:
UserAndTags
我只是想将此方法移动到行为并将其附加到我的模型,我创建行为类并将行为附加到模型但它不起作用abd将null传递给数据库,我的行为类是:
UserAndTagEntity
我模型中的附加代码是:
Tag
请帮助我以正确的方式处理这个问题,非常感谢:)。
答案 0 :(得分:1)
您可以使用TimeStampBehavior
执行此操作。如果您已将created_at, updated_at
列int(11)
声明为UNIX timestamp
。
use yii\behaviors\TimestampBehavior;
public function behaviors()
{
return [
TimestampBehavior::className(),
];
}
但是,由于您的属性名称不同或者您想使用不同的方式计算时间戳,您可以配置$createdAtAttribute
,$updatedAtAttribute
和$value
属性,如下所示:< / p>
use yii\db\Expression;
use yii\behaviors\TimestampBehavior;
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'createdAt',
'updatedAtAttribute' => 'updatedAt',
'value' => new Expression('NOW()'),
],
];
}
答案 1 :(得分:0)
通过在创建表时将created_at
和updated_at
的类型标识为timestamp
,您可以通过简单的方式执行此操作,并且当它将自动填入数据库时您添加新记录或更新现有记录。
示例:
'created_at'=> $this->timestamp(),
'updated_at'=> $this->timestamp(),
注意:您可以使用以下链接找到有关创建表格的更多信息:Yii2 Migration