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