2014-12-24 6 views
2

내 Restful API에서 Yest2를 만든 TimestampBehavior를 사용하려고하지만 POST 엔트 포인트를 사용하여 새 엔티티를 만들 때 반환 데이터가 매우 이상합니다.YII2 편안한 게시 및 TimestampBehavior

{ 
    "i18_id": 3, 
    "language": "es", 
    "text": "un test de traducción", 
    "created_at": { 
    "expression": "NOW()", 
    "params": [ ] 
    }, 
    "updated_at": { 
    "expression": "NOW()", 
    "params": [ ] 
    }, 
    "id": 2 
} 

내가 엔티티를 얻으면 나중에 모든 것이 잘 보입니다. 여기

내가 내 모델의 행동을 선언 한 방법입니다

public function behaviors() 
{ 
    return [ 
     'timestamp' => [ 
      'class' => 'yii\behaviors\TimestampBehavior', 
      'attributes' => [ 
       ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], 
       ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'], 
      ], 
      'value' => new Expression('NOW()'), 
     ], 
    ]; 
} 
+0

'new expression ('NOW() ')'을'time()'으로 대체하는 것이 쉽습니다. – Cthulhu

+0

Expression 네임 스페이스에서 실수가있을 수 있습니까? yii \ db \ Expression이어야합니다. –

답변

0

난 당신이 테스트의 항목을 추가하고 추가 한 모델을 반환 한 것 같아요.

간단한 $model->refresh();이 값을 채울 것으로 생각됩니다.

공식 문서 here을 참조하십시오.

0

나는이 값을 사용하고 있습니다 :

'value' => function() { return date('U'); }, 
+0

답변이 왜 효과가 있는지 자세히 설명해 주시겠습니까? 이렇게하면 독자가 답을 찾지 못하게됩니다. – Cristik

+0

@Cristik 아주 쉽습니다. $ 값은 타임 스탬프를 생성 할 표현식입니다. 나는 NOW 표현식을 사용하지는 않았지만 Linux 콘솔에서 현재 시간을 반환하는 기능으로이를 변경했습니다. 출처 : http://www.yiiframework.com/wiki/684/save-and-display-date-time-fields-in-different-formats-in-yii2/ – JJPunch

+0

감사합니다. 답변에이 세부 정보를 추가 할 수 있습니까? ? – Cristik

0

그래서 결국 나는 @BHoft 제안에 좋은 솔루션 덕분에 찾았습니다.

주로 나머지 ActiveController를 사용하고 있으며 내 api는 날짜 형식을 사용하여 만든 후 날짜를 반환해야하므로 date('U')이 올바른 형식으로 날짜를 반환하지 않기 때문에 내 경우에는 작동하지 않습니다.

내가 한 것은 내 모델에 afterSave을 추가 한 것입니다.

public function afterSave ($insert, $changedAttributes) 
{ 
    if ($insert) 
     $this->refresh(); 
}