你的POST数据数组是什么样的?
<?php
debug($this->data);
?>
如果不正确的格式,相关车型将不会得到保存..蛋糕知道抢已尚未保存的车型“lastInsertId()”,所以你不要不必担心那些......我不确定的是,这些文档并没有真正涉及,这个节省有多深。提供的示例如下:
$this->data =
Array
(
[Article] => Array
(
[title] => My first article
)
[Comment] => Array
(
[0] => Array
(
[comment] => Comment 1
[user_id] => 1
)
[1] => Array
(
[comment] => Comment 2
[user_id] => 2
)
)
)
$this->Article->saveAll($this->data);
这是保存“的hasMany”关系的关联模型的正确结构(CakePHP的1.3),但我不知道,如果去任何更深比一个孩子。
我想到的一件事就是根据上面的格式构建数组,但将父模型留出。然后手动保存父模型数据,获取:: getLastInsertId();然后对部门和团体进行saveAll。
[UPDATE] 我只是测试你的理论,它会工作你想让你的方式。
<?php
echo $this->Form->input('Department.0.Group.0.name');
?>
会产生:
<input name="data[Department][0][Group][0][name]" type="text" id="Department0Group0name">
[更新2] 我做了一些在LIB /蛋糕/型号/ Model.php探索和发现这一点:
<?php
...
public function saveAssociated($data = null, $options = array()) {
...
... // code omitted.
...
if ($options['deep']) { // This will recurse infinitely through all associations
$saved = $this->{$association}->saveAssociated($values, array_merge($options, array('atomic' => false)));
}
...
...
... // code omitted.
...
?>
谢谢!至于saveAll,据我了解,它将保存模型数据和相关的模型数据。所以,在上述情况下,它可以节省所有这些。 saveAll是几个保存方法的包装,其中一个是saveAssociated()。就深度而言,为了保存关联模型相关模型的数据,我相信你可以使用saveAssociated($ data,array('deep'=> true))。我在区域行动的视图内手动创建组的输入。我可以将name属性设置为'',我想知道吗? – Todd 2013-03-27 02:56:20
这似乎是正确的,'深'=>真的吧?我从来没有用过,好主意。我相信你的输入名称是有效的,我相信它会创建正确的结构。 '<?php echo $ this-> Form-> input('Modelname.0.fieldname'); echo $ this-> Form-> input('Modelname.1.fieldname'); ?> > – 2013-03-27 03:07:56
实体深度限制 '在1.2中,有5个嵌套密钥的硬限制。这在某些情况下对表单输入创建造成了很大的限制。在1.3中,现在可以创建无限嵌套的表单元素键。验证错误和值读取的任意深度也已添加.'看起来像限制是无限的:) – 2013-03-27 03:08:15