0

我有一个timestamp类型为 MySQL 的列,称为updated. SELECT UNIX_TIMESTAMP(status_updated)我希望 Yii在 Active Record 模型中默认获取它。这样我就可以做到这一点:

$timestamp_as_integer = MyModel::model()->findByPk(1)->updated;

这很容易吗?现在我正在解析YYYY-MM-DD hh:mm:ssMySQL 为所有日期时间列类型返回的格式以获取整数时间戳,但如果我可以强制数据库为我做这件事,我很好奇?

4

3 回答 3

1

另一种方法是编写一个getter:

public function getUpdatedTimestamp()
{
    return strtotime($this->updated);
}

好消息是,您现在可以访问它,$model->updatedTimestamp并且仍然在$model->updated.

于 2013-09-12T06:47:29.830 回答
1

在模型中执行转换:

protected function afterFind() {
    parent::afterFind();

    $this->status_updated = strtotime($this->status_updated);
}

现在,在您对模型执行“查找”后,该属性status_updated将自动将其int设为时间戳格式。

于 2013-09-12T02:29:40.123 回答
0

离开我的头顶,但这应该有效。

$timestamp_as_integer = MyModel::model()->findByPk(1, array(
    'select' => array(new CDbExpression('UNIX_TIMESTAMP(updated) as updated'))
))->updated;
于 2013-09-12T09:04:25.040 回答