我有一个timestamp
类型的MySQL列,名为updated
。我希望Yii默认使用Active Record模型中的SELECT UNIX_TIMESTAMP(status_updated)
来获取它。所以我可以这样做:
$timestamp_as_integer = MyModel::model()->findByPk(1)->updated;
这很容易吗?现在我正在解析MySQL为所有日期时间列类型返回的YYYY-MM-DD hh:mm:ss
格式以获取整数时间戳,但是如果我可以强制数据库为我做这件事我是好奇的吗?
答案 0 :(得分:1)
在模型中执行转换:
protected function afterFind() {
parent::afterFind();
$this->status_updated = strtotime($this->status_updated);
}
现在,在对模型执行“查找”后,属性status_updated
将自动以int
时间戳格式显示。
答案 1 :(得分:1)
另一种方法是编写一个getter:
public function getUpdatedTimestamp()
{
return strtotime($this->updated);
}
好消息是,您现在可以$model->updatedTimestamp
访问它,并且仍然在$model->updated
中拥有原始数据库值。
答案 2 :(得分:0)
脱离我的头顶,但这应该有用。
$timestamp_as_integer = MyModel::model()->findByPk(1, array(
'select' => array(new CDbExpression('UNIX_TIMESTAMP(updated) as updated'))
))->updated;