2016-09-19 15 views
0

データベースにデータを保存するときに問題が発生しました。 1970-01-01、無効な日付として保存されます。私はそれらをdd-mm-yyyyとして読んで、それらをyyyy-mm-ddのデータベースに変換します。yii2保存日の形式方法1970-01-01データベース

私のモデル

public function behaviors() 
 
{ 
 
    return [ 
 
     [ 
 
      'class' => AttributeBehavior::className(), 
 
      'attributes' => [ 
 
       attribute ['created','updated'] 
 
       ActiveRecord::EVENT_BEFORE_INSERT => ['data_arrivo','data_part'], 
 
       ActiveRecord::EVENT_BEFORE_UPDATE => 'data_arrivo', 'data_part' 
 
      ], 
 
      'value' => function ($event) { 
 
       return date('Y-m-d', strtotime($this->data_part)); 
 
      }, 
 
     ], 
 
    ];

任意の提案ですか?

答えて

1

beforeSaveイベントは、モデルファイルで使用できます。レコードをテーブルに保存する前にコールを受け取ります。

public function beforeSave($insert) { 
    if($this->data_part){ 
     $this->data_part = Yii::$app->formatter->asDate(strtotime($this->data_part), "php:Y-m-d"); 
    } 
    return parent::beforeSave($insert); 
    } 

は、私は)私のコード

public function beforeSave($insert) { 
 
    if($this->data_part){ 
 
     
 
$this->data_part = Yii::$app->formatter->asDatetime(strtotime($this->data_part), "php:Y-m-d"); 
 
    
 
    if($this->data_arrivo) 
 
     $this->data_arrivo = Yii::$app->formatter->asDatetime(strtotime($this->data_arrivo), "php:Y-m-d"); 
 
    
 
    } 
 
    return parent::beforeSave($insert); 
 
}

+0

この機能は、行動(と実装することです投稿機能しないのですか? – Saba

+0

いいえこれは、アクティブなレコードイベントメソッドです。同じような動作をします。参考までに - http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#beforeSave()-detail –

+0

私はそれを動作させることができません。なぜなら、私は日付の2つのパラメータを持っているからでしょうか? data_part、data_arrivo – Saba