你的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