2011-05-18 53 views
0

嘿,伙计们,我在漫长的夜晚后超级卡住了。菜单hasMany Widget,Widget hasMany WidgetItem(当然还有WidgetItem belongsTo Widget,Widget belongsTo Menu)。我创建了一个应用程序,您可以动态创建食物菜单,并建立如下关系:为多个模型保存多个记录cakephp

菜单首先被创建,然后用户被重定向到addSectionsToMenu,在那里我分别设置了多个小工具(标题输入)和多个项目(菜单项)。

我的小部件保存并附加到菜单上,但我的WidgetItems不保存。我确信我的模型设置得很好,我花了2个小时对我的$ data结构进行了整理。我只是觉得我需要在这里弄清楚一些事情。

请帮忙!

感谢,

〜哈雷

function addSectionsToMenu($menu_id = null){ 
    $this->layout = 'admin'; 
    $this->set('menu_id', $menu_id); 
    $this->set('menu', $this->Widget->Menu->findById($menu_id)); 
    if (!$menu_id && empty($this->data)) { $this->Session->setFlash(__('Pick a menu to add to please :)', true)); } 

    $saveSuccess = false; 

    if(!empty($this->data['Widget'])) { 
     $widget_count = 0; 
     foreach($this->data['Widget'] as $widgetKey => $widget) : 
      if($this->Widget->saveAll($widget)) : $saveSuccess = true; endif; 
      $widget_count++; 
     endforeach; 

     if ($saveSuccess) { 

      $this->Session->setFlash(__($widget_count.' sections have been added to the Menu', true)); 
      $this->redirect(array('controller' => 'menus', 'action' => 'index')); 

     } else { 

      $this->Session->setFlash(__('The Menu and Sections could not be saved. Please, try again.', true)); 

     } 
    } 
} 
+0

$ this-> Widget-> validationErrors的值是多少?将config/core.php中的DEBUG常量设置为3,以查看SQL的完整调试和当前对象的转储。这两件事中的一件应该可以帮助你找到问题所在。 – 2011-05-19 02:14:42

回答

0

我已经保存多个型号一次的问题,我通过调整验证选项解决它。

$this->Invoice->saveAll($this->data, array('validate' => true)) 

explanation of the options array不作完整的意义,我,但默认是造成我插入失败,因为相关的记录并没有获得来自父记录的插入自己的外键。将该选项更改为“first”(默认值)为“true”解决了问题,并且行正确显示在数据库中。

+0

谢谢你,但它仍然无效:( – 2011-05-19 00:27:39

+0

相同这里。我有一个数据数组,我进入saveAll像这样$ this-> ExternalHeader-> saveAll($ data,array('validate'= > true))。没有记录出现,我也卡住了。 – 2012-05-03 17:37:15