我正在节省时间,从名为ItemView的模型中保存最简单的记录:
if($this->save($this->data)) { echo 'worked'; } else { echo 'failed'; }
其中$ this->数据是:
Array ( [ItemView] => Array ( [list_id] => 1 [user_id] => 1 ) )
我的表是:
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 ;
在调试模式下查看查询转储,Cake甚至没有尝试INSERT,所以我不知道如何调试.
任何帮助,将不胜感激.
哇,我生命中浪费了两个悲惨的时光.
请记住,你beforeSave()
必须回来true
!
要调试Model-> save(),请检查验证错误和最后一个sql查询
$this->Model->save($data); debug($this->Model->validationErrors); //show validationErrors debug($this->Model->getDataSource()->getLog(false, false)); //show last sql query
在cakephp 3.x中,您可以在插入/更新期间进行调试
if ($this->TableName->save($entity)) { // success } else { // if not save, will show errors debug($entity->errors()); }
总是得到我的是,如果我修改实际的表(通常通过向其添加属性),那么你必须刷新缓存.通常只删除以下两个文件夹中的所有内容对我来说很有用:
tmp > cache > models tmp > cache > persistent