CakePHP不会将创建的日期存储在实时服务器上

时间:2014-05-27 14:26:14

标签: cakephp cakephp-2.3

我在localhost和live服务器上运行的脚本和完全相同的数据库完全相同。我面临的问题是'创建的日期'不会自动存储。

以下是控制器操作:

function add() {
    if (!empty($this->data) ) {
        $this->Customer->create();
        if ($this->Customer->save($this->data)) {
            $this->Session->setFlash(__('Customer was saved'), 'positive_notification');
            $this->redirect(array('controller'=>'customers', 'action' => 'index'));
        } else {
            $this->Session->setFlash(__('Customer was not saved. Please try again'), 'negative_notification');
        }
    }
}

beforeSave也没有功能。

这是数据库表:

`customers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `company_id` int(11) NOT NULL,
  `customer_nr` varchar(20) DEFAULT NULL,
  `name` varchar(60) DEFAULT NULL,
  `address` varchar(250) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `phone` varchar(18) DEFAULT NULL,
  `post_nr` varchar(6) DEFAULT NULL,
  `city` varchar(50) DEFAULT NULL,
  `color` varchar(7) NOT NULL,
  `created` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `company_id` (`company_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=113 ;

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为你必须使用:

     $this->request->data //instead of $this->data

但是,如果已创建是唯一未保存的字段,请首先尝试调试 $ this->数据,然后先尝试先查看是否真正保存数据:

   $this->data["Customer"]["created"] = data("Y-m-d"); // temporarily set to current date just to see if it was saving
   $this->Customer->save($this->data)

然后检查它是否已添加到您的数据库中。如果是,那么您必须更新 $ this->数据,它可能包含错误值错误的日期格式

答案 1 :(得分:0)

日期不会自动更新,因为您将created设置为date而不是datetime

如“Saving Your Data

所述
  

通过将数据库表中创建和/或修改的字段定义为datetime字段(默认为null),CakePHP将识别这些字段并在创建记录或将数据保存到数据库时自动填充它们(除非已保存数据)包含这些字段的值。)

我希望这能解决你的问题。