2016-06-03 17 views
0
arbeiten

Ich möchte die dieses folgende Datumzeit während Aktualisierung oder erstellen speichern, so schrieb ich dies in den Regeln()Speichern Standardwerte in Yii2 nicht

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

und ich erkläre Szenario in erstellen und Update-Funktionen wie

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

Während erstellen datetime speichert perfekt.aber in update ist es nicht speichert.Was ist das Problem ?? Jeder?

+0

Ist 'updatedon' leer ist, bevor Update verwenden? Und Sie könnten dazu 'yii \ behaviors \ TimestampBehavior' verwenden. – soju

+0

aber wie funktioniert die Einfügung richtig? – Jackhad

Antwort

1

Dies sind Validatoren für Benutzereingaben. Sie vermutlich suchen TimestampBehavior: http://www.yiiframework.com/doc-2.0/yii-behaviors-timestampbehavior.html

Die TimestampBehavior Config sollte ein ActiveRecord Modell hinzugefügt werden. Nicht der Controller.

+0

Ich habe in meinem Controller '[ 'class' => TimestampBehavior :: classname(), 'createdAtAttribute' => 'createdon', 'updatedAtAttribute' => 'updatedon', 'Wert' => neue Expression ('NOW()'), ], 'Aber hilft nicht – Jackhad

+0

@Jackhad. Es sollte den Datentyp 'int' in mysql haben. –

+1

@Jackhad sollte es dem Modell hinzugefügt werden, nicht der Controller ... Genau wie die Dokumentation sagt. – ddinchev

1

Sie direkt _form

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