CakePHP saveAll 方法
Posted
技术标签:
【中文标题】CakePHP saveAll 方法【英文标题】:CakePHP saveAll method 【发布时间】:2014-08-25 20:55:39 【问题描述】:在我提交表单时使用的注册表单:
$this->User->saveAll($this->request->data, array('validate' => 'first', 'deep' => true));
此行失败。它无法保存我的新用户和所有相关数据。 我收到此错误:
Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
myDBName.
individuals, CONSTRAINT
graduate_id_fkFOREIGN KEY (
education_id) REFERENCES
educations(
id) ON DELETE NO ACTION ON UPDATE NO ACTION)
。
我猜 Cakephp 正在尝试保存我的第一个与用户表记录相关的记录,这就是我收到此错误的原因。 有谁知道如何设置保存对象的顺序? 如何查看生成的查询?
谢谢各位。
【问题讨论】:
您的表是否使用递增 ID?如果是这样,它们是否设置为正确递增? 首先,最好共享有效负载的数组结构和数据库模式。其次,在使用 Cake 时,我通常不会在数据库中设置约束和规则。而是在模型验证规则中指定它们。因此只能在一处更新规则。 【参考方案1】:将查询输出到视图或日志文件:
输出到视图:
<?php echo $this->element('sql_dump'); ?>
输出到日志:
$db =& ConnectionManager::getDataSource('default');
$db->showLog();
如果您在查看查询后仍然遇到问题,请将您收集的调试信息连同您传递的数组一起发布到 saveAll()
。
【讨论】:
以上是关于CakePHP saveAll 方法的主要内容,如果未能解决你的问题,请参考以下文章
CakePHP 使用 saveAll:如何使用 HABTM 链接记录保存额外数据?
CakePHP 奇怪的 saveAll 问题。返回 true,但在数据库中没有任何内容