【问题标题】:Save default values in Yii2 not working在 Yii2 中保存默认值不起作用
【发布时间】:2016-06-03 07:00:30
【问题描述】:

我想在更新或创建时保存以下日期时间,所以我在 rules() 中写了这个

['createdon','default','value'=>date('Y-m-d H:i:s'),'on'=>'insert' ],
['updatedon','default','value'=>date('Y-m-d H:i:s'),'on'=>'update' ],

我将创建和更新函数中的场景声明为

public function actionCreate()
{
    $model = new JobFunctionRole();
    $model->scenario = 'insert';
....
....
}
public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $model->scenario = 'update';
    ...
    ...
}   

虽然创建日期时间存储完美。但更新它不是存储。有什么问题?有人吗?

【问题讨论】:

  • 更新前updatedon 是空的吗?您可以为此使用yii\behaviors\TimestampBehavior
  • 但是插入如何正常工作?

标签: yii2 yii2-basic-app scenarios yii2-model


【解决方案1】:

你直接使用_form

 <?= $form->field($model, 'createdon')->hiddenInput('value'=>date("Y-m-d")])->label(false) ?>

【讨论】:

    【解决方案2】:

    这些是用户输入的验证器。您可能正在寻找TimestampBehaviorhttp://www.yiiframework.com/doc-2.0/yii-behaviors-timestampbehavior.html

    TimestampBehavior 配置应添加到 ActiveRecord 模型中。不是控制器。

    【讨论】:

    • 我在控制器中添加了这个 ` [ 'class' => TimestampBehavior::className(), 'createdAtAttribute' => 'createdon', 'updatedAtAttribute' => 'updatedon', 'value' = > new Expression('NOW()'), ],' 但没有帮助
    • @Jackhad。它应该在 mysql 中有 int 数据类型。
    • @Jackhad 它应该被添加到模型中,而不是控制器中......就像文档说的那样。
    • 对我来说没有它的日期时间数据类型..任何配置?
    • @ddinchev 它工作正常,但是..当我使用 REST APi 模型时,它会返回类似 `"updatedon": { "expression": "NOW()", "params": [] }' 我不想让用户看到这个。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2018-11-12
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多