saveall не сохраняет связанные данные - PullRequest
2 голосов
/ 03 июня 2010

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

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

В курсе много курсов__
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
    ...
  )

  ...

  )
)

1 Ответ

2 голосов
/ 03 июня 2010

В соответствии с соглашениями CakePHP вы должны предоставить [course_id] => 1028476, а не [courseid] => 1028476. Проверьте также привязки модели (заглавные буквы и подчеркивания). Там должно быть "Курс имеет много CourseTee". Сделайте таким образом , чтобы сохранить:

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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...