簡體   English   中英

YII2 Restful Post和TimestampBehavior

[英]YII2 Restful post and TimestampBehavior

我試圖在我的Restful API創建的Yii2中使用TimestampBehavior,但是當我使用POST端點創建新實體時,返回數據非常奇怪。

{
  "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()'),
        ],
    ];
}

我想您已經在測試中添加了Entry並返回了剛剛添加的模型。

我猜一個簡單的$model->refresh(); 將填充值。

在此處查看官方文檔。

我正在使用此值:

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

所以終於有了@BHoft的建議,我找到了一個很好的解決方案。

主要是我使用其余的ActiveController,並且我的api需要在創建后使用日期格式返回日期,因此date('U')在我的情況下不起作用,因為它未以正確的格式返回日期。

我所做的是我在模型中添加了afterSave

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM