当前位置:  开发笔记 > 编程语言 > 正文

如何在CakePHP Model :: save()不尝试INSERT时进行调试

如何解决《如何在CakePHPModel::save()不尝试INSERT时进行调试》经验,为你挑选了4个好方法。

我正在节省时间,从名为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,所以我不知道如何调试.

任何帮助,将不胜感激.



1> chipotle_war..:

哇,我生命中浪费了两个悲惨的时光.

请记住,你beforeSave()必须回来true!



2> Jan Moritz..:

要调试Model-> save(),请检查验证错误和最后一个sql查询

$this->Model->save($data);

debug($this->Model->validationErrors); //show validationErrors

debug($this->Model->getDataSource()->getLog(false, false)); //show last sql query



3> Saidul Haque..:

在cakephp 3.x中,您可以在插入/更新期间进行调试

if ($this->TableName->save($entity)) {
      // success 
} else {
// if not save, will show errors 
  debug($entity->errors());

}



4> rodrigo-silv..:

总是得到我的是,如果我修改实际的表(通常通过向其添加属性),那么你必须刷新缓存.通常只删除以下两个文件夹中的所有内容对我来说很有用:

tmp > cache > models 
tmp > cache > persistent


这非常有用!! 经过2个小时的磨练,我赢了...干杯!
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有