2010-06-03 2 views
2

У меня возникла проблема с попыткой сохранить (обновить) некоторые связанные данные. Я прочитал около миллиона возвратов Google, но ничего похожего не было решением. Я нахожусь в своем уме и надеюсь, что здесь может помочь какая-то добродушная душа.saveall не сохраняет связанные данные

Я использую 1.3.0-RC4, моя база данных находится в InnoDB.

Курс имеет много course_tees принадлежит
CourseTee на курс

Моя функция контроллера довольно проста (я сделал это так просто, как это возможно):

if(!empty($this->data)) 
$this->Course->saveAll($this->data); 

Я пробовал много различные варианты этого $ this-> data ['Course'], save ($ this-> data) и т. д. без везения.

Сохраняет информацию о курсе, но не материал CourseTee. Я не получаю сообщение об ошибке.

Поскольку я не знаю, сколько тисов имеет данный курс, я генерирую динамические входы формы в цикле.

$form->input('CourseTee.'.$i.'.teeName', array(
    'error' => false, 
    'label' => false, 
    'value'=>$data['course_tees'][$i]['teeName'] 
)) 

Входы конечно проще:

$form->input('Course.hcp'.$j, array(
    'error' => false, 
    'label' => false, 
    'class' => 'form_small_w', 
    'value'=>$data['Course']['hcp'.$j] 
)) 

И это, как отформатирован мои данные:

Array 
(
    [Course] => Array 
    (
    [id] => 1028476 
    ... 
) 

    [CourseTee] => Array 
    (
    [0] => Array 
    (
    [key] => 636 
    [courseid] => 1028476 
    ... 
) 

    [1] => Array 
    (
    [key] => 637 
    [courseid] => 1028476 
    ... 
) 

    ... 

) 
) 

ответ

2

Согласно CakePHP конвенций, вы должны предоставить [course_id] => 1028476 и не [courseid] => 1028476. Проверьте также привязки модели (заглавные буквы и символы подчеркивания). Должно быть, «Course has many CourseTee». ли this way спасти:

if ($this->Course->saveAll($this->data, array('validate' => 'first'))) { 
    $this->_flash(__('Successfully saved.', true), 'success'); 
} else { 
    $this->_flash(__('Cannot save. Does not validates.', true), 'error'); 
} 
+1

Во-первых, благодаря deceze для правильного форматирования моего поста. Я постараюсь это сделать в следующий раз. Bancer, это великолепно. Работает. Я изменил привязку модели к тому, что вы предложили, но так как это было неверно в моих взглядах, мои тройники не показывались, и я предположил, что это неверно. Я не уверен, почему я не видел его, так как все остальные модели были разными. Еще раз спасибо за ваше время. – junior29101

Смежные вопросы