gpt4 book ai didi

php - 仅当模型属性为空或空白时才更新 `create_at` 模型属性

转载 作者:行者123 更新时间:2023-12-03 23:03:00 26 4
gpt4 key购买 nike

我在 yii2-user 中使用 YII2 高级应用程序模板。

public function behaviors()
{
return [
TimestampBehavior::className(),
];
}

这将在我的用户模型中设置当前的 timestamp 值。但我只想在它为 null 时添加它;如果我在我的 Controller 中设置值,它不应该被覆盖。

最佳答案

您可以使用自定义逻辑创建您的TimestampBehavior:

<?php
namespace app\behaviors;

use yii\db\ActiveRecord;
use yii\base\Behavior;
use yii\db\Expression;

class ARTimestampBehavior extends Behavior
{

public function events()
{
return [
ActiveRecord::EVENT_BEFORE_INSERT => 'beforeInsert',
ActiveRecord::EVENT_BEFORE_UPDATE => 'beforeUpdate',
];
}

public function beforeInsert($event)
{
$model = $event->sender;
if ($model->hasAttribute('created_at') && is_null($model->created_at)) {
$model->created_at = new Expression('NOW()');
}
if ($model->hasAttribute('updated_at')) {
$model->updated_at = new Expression('NOW()');
}
}

public function beforeUpdate($event)
{
$model = $event->sender;
if ($model->hasAttribute('updated_at')) {
$model->updated_at = new Expression('NOW()');
}
}

}

然后在你的模型中使用它:

public function behaviors()
{
return [
ARTimestampBehavior::className(),
];
}

关于php - 仅当模型属性为空或空白时才更新 `create_at` 模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31202986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com