CJuiDatePicker始终将当前日期保存在数据库中

时间:2014-10-27 15:12:45

标签: php date datetime yii datepicker

这是我在模型规则中的代码...... .................................................. .................................................. .........................

array('dataMedicao', 'type', 'type' => 'date', 'message' => '{attribute}: is not a date!', 'dateFormat' => 'yyyy-MM-dd'),
array('dataMedicao', 'default',
'value' => new CDbExpression('NOW()'), //automatically add the current date in mysql feild
'setOnEmpty' => true, 'on' => 'update'),
array('date_created,date_modified', 'default',
'value' => new CDbExpression('NOW()'),
'setOnEmpty' => false, 'on' => 'insert'),

............................................... .................................................. ............................

protected function beforeSave() {
$this->dataMedicao = new CDbExpression('NOW()');
return parent::beforeSave();
}

protected function afterFind() {
$this->dataMedicao = date('Y-m-d', strtotime($this->dataMedicao));
return TRUE;
}

............................................... .................................................. ..........................

这是我在Form中的代码......

<?php echo $form->labelEx($model, 'dataMedicao'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'name' => 'dataMedicao',
'attribute' => 'dataMedicao',
'value' => $model->dataMedicao,
// additional javascript options for the date picker plugin
'options' => array(
'showAnim' => 'fold',
'dateFormat' => 'yy-mm-dd',
),
'htmlOptions' => array(
'style' => 'height:20px;'
),
));
?>
<?php echo $form->error($model, 'dataMedicao'); ?>

............................................... .................................................. ..........................

在我的数据库日期设置为0000-00-00,当我列出它们时,它们设置为1970-01-01 ...然后在更新时我使用DatePicker设置更新字段的日期,但它总是得到我们当前日期的更新...如何获得我在DatePicker中设置的日期以及如何将其保存在我的数据库中? 感谢所有帮助

1 个答案:

答案 0 :(得分:0)

您的beforeSave确保每当记录更新时$this->dataMedicao始终设置为NOW()。删除此行或将其包装在条件中,使其仅在插入时发生。

protected function beforeSave() {
  if ($this->isNewRecord)
      $this->dataMedicao = new CDbExpression('NOW()');
  return parent::beforeSave();
}

也可以通过修改rules

来完成

此外,您的日期选择代码应引用$model,如下所示:

$this->widget('zii.widgets.jui.CJuiDatePicker', array(
    'model' => $model,
    'attribute' => 'dataMedicao',
    ...

如果没有这个,则在大量分配期间无法设置dataMedicao,因为发布变量的namedataMedicao而不是<Model>[dataMedicao]