我正在节省时间,从名为ItemView的模型中保存最简单的记录:
if($this->save($this->data)) {
echo 'worked';
} else {
echo 'failed';
}
Run Code Online (Sandbox Code Playgroud)
其中$ this->数据是:
Array
(
[ItemView] => Array
(
[list_id] => 1
[user_id] => 1
)
)
Run Code Online (Sandbox Code Playgroud)
我的表是:
CREATE TABLE IF NOT EXISTS `item_views` (
`id` int(11) NOT NULL auto_increment,
`list_id` int(11) NOT NULL,
`user_id` int(11) default NULL,
`user_ip` int(10) unsigned default NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)
在调试模式下查看查询转储,Cake甚至没有尝试INSERT,所以我不知道如何调试.
任何帮助,将不胜感激.
Jan*_*itz 21
要调试Model-> save(),请检查验证错误和最后一个sql查询
$this->Model->save($data);
debug($this->Model->validationErrors); //show validationErrors
debug($this->Model->getDataSource()->getLog(false, false)); //show last sql query
Run Code Online (Sandbox Code Playgroud)
在cakephp 3.x中,您可以在插入/更新期间进行调试
if ($this->TableName->save($entity)) {
// success
} else {
// if not save, will show errors
debug($entity->errors());
}
Run Code Online (Sandbox Code Playgroud)
总是得到我的是,如果我修改实际的表(通常通过向其添加属性),那么你必须刷新缓存.通常只删除以下两个文件夹中的所有内容对我来说很有用:
tmp > cache > models
tmp > cache > persistent
Run Code Online (Sandbox Code Playgroud)