0

$model->created = date("Y-m-d H:m:s");经常使用 MySQL 友好格式获取当前日期时间,并希望将那一点点放入适合重用的地方。我意识到有很多方法可以做到这一点,但是“Yii”的方法是什么?

4

2 回答 2

2

我有一个 BaseModel,大多数模型都继承自它。beforeSave()如果没有设置,我在函数中执行 dateCreated 的设置。另外,我正在使用一个名为 LocalTime 的组件。见http://www.yiiframework.com/wiki/197/local-time-zones-and-locales/

class BaseModel extends CActiveRecord {

    protected function beforeSave() {

        parent::beforeSave();

        if($this->hasAttribute('dateCreated') && $this->isNewRecord)
            $this->dateCreated = Yii::app()->localtime->getUTCNow();

        ...

        return $this;
    }

如果您决定使用 LocalTime 组件,请确保在查找时从 UTC 转换回本地时间:

protected function afterFind() {

    parent::afterFind();

    if($this->hasAttribute('dateCreated'))
        $this->dateCreated = Yii::app()->localtime->fromUTC($this->dateCreated);

    ...

    return $this;
}
于 2013-02-27T09:16:28.597 回答
1

你可以使用 yii 的内置行为,命名为CTimestampBehavior.

   class YourModel extends CActiveRecord 
   {
        public function behaviors()
        {
            return array(
                'CTimestampBehavior' => array(
                    'class' => 'zii.behaviors.CTimestampBehavior',
                    'createAttribute'=>'created',
                )
            );
        }

    }

它是高度可定制的。您还可以指定updateAttribute设置更新时间、timestampExpression指定备用日期格式等。

于 2013-02-27T11:30:54.080 回答