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;
}