saveall不保存关联数据

时间:2010-06-03 05:32:34

标签: cakephp

我在尝试保存(更新)某些关联数据时遇到问题。我已经阅读了大约一百万的谷歌回报,但似乎没有什么是解决方案。我在我的智慧结束,并希望这里有一些善良的灵魂可以提供帮助。

我正在使用1.3.0-RC4,我的数据库在InnoDB中。

课程有很多课程 CourseTee属于课程

我的控制器功能非常简单(我尽可能简单):

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

我尝试了很多不同的$ this->数据['课程']变体,保存($ this->数据)等,没有运气。

它会保存课程信息,但不保存CourseTee的内容。我没有收到错误消息。

由于我不知道任何给定课程将有多少T恤,我会在循环中动态生成表格输入。

$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 个答案:

答案 0 :(得分:2)

根据CakePHP惯例,您必须提供[course_id] => 1028476而不是[courseid] => 1028476。检查模型绑定(大写和下划线)。必须有“课程有很多课程”。 要保存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');
}