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