我在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 ;
非常感谢任何帮助。
答案 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
。
通过将数据库表中创建和/或修改的字段定义为datetime字段(默认为null),CakePHP将识别这些字段并在创建记录或将数据保存到数据库时自动填充它们(除非已保存数据)包含这些字段的值。)
我希望这能解决你的问题。