gpt4 book ai didi

yii2 - 在 yii 中设置创建和更新的默认值

转载 作者:行者123 更新时间:2023-12-04 16:43:51 24 4
gpt4 key购买 nike

我正在尝试使用以下规则更新 yii 1.1 中的某些字段,但它不起作用。

public function rules()
{
return [
['CreatedOn','default','value'=>time(),'isEmpty'=>true,'on'=>'insert'],
['CreatedBy','default','value'=>\Yii::$app->user->identity->id,'isEmpty'=>true,'on'=>'insert'],
['ModifiedOn','default','value'=>time(),'isEmpty'=>true,'on'=>'update'],
['ModifiedBy','default','value'=>\Yii::$app->user->identity->id,'isEmpty'=>true,'on'=>'update'],
];
}

我正在寻找更新 CreatedByCreatedOn插入时,和 ModifiedByModifiedOn更新时。

最佳答案

来自 soju's excellent answer ,与 Yii2:

By default, a model supports only a single scenario named default



因此,您应该在 Controller 中手动设置场景,即:
$model->scenario = 'insert';

您也可以使用 when而不是 on IE:
['CreatedOn', 'default', 'value'=>time(), 'isEmpty'=>true, 'when'=>
function($model) { return $model->isNewRecord; }
],
['ModifiedOn', 'default', 'value'=>time(), 'isEmpty'=>true, 'when'=>
function($model) { return !$model->isNewRecord; }
],

rules() 中设置它们的替代方法将使用 beforeSave() 设置它们:
public function beforeSave($insert) {
if ($insert) {
$this->CreatedBy = \Yii::$app->user->identity->id;
$this->CreatedOn = time();
} else {
$this->ModifiedBy = \Yii::$app->user->identity->id;
$this->ModifiedOn = time();
}
return parent::beforeSave($insert);
}

关于yii2 - 在 yii 中设置创建和更新的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28964430/

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