Php 行为与save()冲突

Php 行为与save()冲突,php,yii,Php,Yii,使用$model->save()后它取消现有行为DateTimeI18NBehavior。有人知道怎么解决吗 行为DateTimeI18NBehavior: Users.php(模型): 代码: 代码2: $criteria = new CDbCriteria; $model = Users::model()->findByPk('1'); $model->ip = Yii::app()->request->userHostAddress; $model->sa

使用
$model->save()后它取消现有行为
DateTimeI18NBehavior
。有人知道怎么解决吗

行为DateTimeI18NBehavior:


Users.php(模型):

代码:

代码2:

$criteria = new CDbCriteria;
$model = Users::model()->findByPk('1');

$model->ip = Yii::app()->request->userHostAddress;
$model->save();

echo $model->birthday;
// Response: 1990-10-15 (wrong)

这是
DateTimeI18NBehavior
中的一个错误。它在保存数据之前将日期时间格式化为Y-m-d,并保持原样。快速修复方法是在行为中添加一个
afterSave()
事件处理程序,其逻辑与
afterFind()的逻辑相同


这是
DateTimeI18NBehavior
中的一个错误。它在保存数据之前将日期时间格式化为Y-m-d,并保持原样。快速修复方法是在行为中添加一个
afterSave()
事件处理程序,其逻辑与
afterFind()的逻辑相同


这是
DateTimeI18NBehavior
中的一个错误。在保存数据之前,它将日期时间格式化为
Y-m-d
,并保持原样。快速修复方法是在behaviour@dInGd0nG谢谢,我修好了!你可以把你的
评论
作为
答案
,这样我就可以接受了。这是
DateTimeI18NBehavior
中的一个错误。在保存数据之前,它将日期时间格式化为
Y-m-d
,并保持原样。快速修复方法是在behaviour@dInGd0nG谢谢,我修好了!你可以把你的
评论
作为
回答
,这样我就可以接受了。
$criteria = new CDbCriteria;
$model = Users::model()->findByPk('1');
echo $model->birthday;
// Response: 15/10/1900 (right)
$criteria = new CDbCriteria;
$model = Users::model()->findByPk('1');

$model->ip = Yii::app()->request->userHostAddress;
$model->save();

echo $model->birthday;
// Response: 1990-10-15 (wrong)
public function afterSave($event){

        foreach($event->sender->tableSchema->columns as $columnName => $column){

            if (($column->dbType != 'date') and ($column->dbType != 'datetime')) continue;

            if (!strlen($event->sender->$columnName)){ 
                $event->sender->$columnName = null;
                continue;
            }

            if ($column->dbType == 'date'){             
                $event->sender->$columnName = Yii::app()->dateFormatter->formatDateTime(
                                CDateTimeParser::parse($event->sender->$columnName, $this->dateIncomeFormat),'medium',null);
            }else{              
                $event->sender->$columnName = 
                    Yii::app()->dateFormatter->formatDateTime(
                            CDateTimeParser::parse($event->sender->$columnName, $this->dateTimeIncomeFormat), 
                            'medium', 'medium');
            }
        }
        return true;
    }