2016-09-19 27 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