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은 여러 save 메소드에 대한 랩퍼이며, 그 중 하나는 saveAssociated()입니다. 깊이 관련 모델의 관련 모델에 대한 데이터를 저장하려면 saveAssociated ($ data, array ('deep'=> true))를 사용할 수 있다고 생각합니다. 지구 활동에 대한 견해 내에서 그룹에 대한 입력을 수동으로 작성하고 있습니다. name 속성을' – Todd
그건 맞아, '깊은'=> 사실 응? 나는 결코 그것을 사용하지 않았다, 좋은 생각. 나는 당신의 입력 이름이 유효하다고 믿고 그것이 올바른 구조를 만들 것이라고 믿습니다. ' php echo $ this-> Form-> input ('Modelname.0.fieldname'); echo $ this-> Form-> input ('Modelname.1.fieldname'); ?> ' –
엔티티 깊이 제한 '1.2에서는 중첩 된 키가 5 개로 엄격하게 제한되었습니다. 이로 인해 일부 컨텍스트에서 양식 입력 작성에 중대한 제한이있었습니다. 이제 1.3에서 무한대로 중첩 된 양식 요소 키를 작성할 수 있습니다. 유효성 검사 오류 및 임의의 깊이에 대한 값 읽기도 추가되었습니다. 제한이 무한대 인 것처럼 보입니다. :) –