在yii中创建和更新时设置默认值

纳德姆

我正在尝试使用以下规则更新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'],
    ];
}

我正在寻找更新CreatedBy以及CreatedOn何时插入ModifiedBy以及ModifiedOn何时更新。

托弗

soju的出色答案中,使用Yii2:

默认情况下,模型仅支持一个名为 default

因此,您应该在控制器中手动设置方案,即:

$model->scenario = 'insert';

您也可以使用when代替on

['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);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为创建和更新的日期列设置默认值是一个好习惯吗?

来自分类Dev

在SQLite中创建表时设置默认值

来自分类Dev

在DropDownList Yii PHP中设置默认值

来自分类Dev

通过实体框架模式创建时,SQL Server 表中未设置默认值

来自分类Dev

值为null时在查询中设置默认值

来自分类Dev

为空时在 Textview 中设置默认值

来自分类Dev

在android sqlite中创建表时插入默认值

来自分类Dev

如何在GridView Yii2中设置默认值

来自分类Dev

如何在select2 yii2中设置选定或默认值?

来自分类Dev

Yii1 为迁移中的 DB 列设置默认值

来自分类Dev

Scala默认值:如何在创建LinkedList时从Scala中的Any类型获取默认值?

来自分类Dev

在WPF ComboBox中设置默认值

来自分类Dev

在Mongoid中设置关联的默认值

来自分类Dev

在PHP中设置变量的默认值

来自分类Dev

在C#中设置默认值

来自分类Dev

在单选按钮中设置默认值

来自分类Dev

在MVC中设置DropDownList的默认值

来自分类Dev

在PHP中设置默认值

来自分类Dev

在C#中设置默认值

来自分类Dev

在SQL查询中设置默认值

来自分类Dev

在html中设置选项的默认值

来自分类Dev

在 emmet 中设置默认值

来自分类Dev

在mvc中创建表单的默认值

来自分类Dev

从one2many字段创建记录时设置默认值-odoo

来自分类Dev

使用Upsert更新为true时未设置默认值

来自分类Dev

如何将通过tkinter中的循环创建的单选按钮值设置为默认值?

来自分类Dev

创建默认值

来自分类Dev

在Red-Gate数据比较中设置对象映射时设置默认值

来自分类Dev

Windows 10:当Firefox未显示在“设置”中时,将其设置为默认值吗?