YII2 Restful post和TimestampBehavior

时间:2014-12-24 06:50:15

标签: php rest yii2

我尝试在Restful API中使用TimestampBehavior创建Yii2,但是当我使用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()'),
        ],
    ];
}

2 个答案:

答案 0 :(得分:0)

我猜你已经在测试中添加了条目并返回刚刚添加的模型。

我想一个简单的$model->refresh();会填充这些值。

请参阅官方文档here

答案 1 :(得分:0)

最后,由于@BHoft的建议,我找到了一个很好的解决方案。

主要是我正在使用其余的ActiveController,我的api需要在创建后使用日期格式返回日期,因此date('U')在我的情况下不起作用,因为它不会返回日期正确的格式。

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

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