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, CONSTRAINTgraduate_id_fkFOREIGN KEY (education_id) REFERENCESeducations(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 并使用手动查询

CakePHP 使用 saveAll:如何使用 HABTM 链接记录保存额外数据?

CakePHP:用户数据 saveAll 静默失败?

CakePHP 奇怪的 saveAll 问题。返回 true,但在数据库中没有任何内容

cakephp:使用 saveAll(),导入的(非表单相关的)关联数据不保存

CakePHP 使用 3 个带有 saveAll 的模型