为多个模型保存多个记录cakephp

为多个模型保存多个记录cakephp,cakephp,associations,save,Cakephp,Associations,Save,嘿,伙计们,经过一个漫长的夜晚,我被深深地困住了 我正在创建一个应用程序,您可以在其中动态创建食物菜单,并设置这样的关系:菜单有许多小部件,小部件有许多WidgetItem(当然,WidgetItem belongsTo小部件,小部件belongsTo菜单) 首先创建菜单,然后将用户重定向到addSectionsToMenu,在这里我设置了多个小部件(标题输入),分别带有多个项目(菜单项) 我的小部件可以保存并附加到菜单,但是我的WidgetItems不保存。我确信我的模型设置得很好,我花了2个

嘿,伙计们,经过一个漫长的夜晚,我被深深地困住了

我正在创建一个应用程序,您可以在其中动态创建食物菜单,并设置这样的关系:菜单有许多小部件,小部件有许多WidgetItem(当然,WidgetItem belongsTo小部件,小部件belongsTo菜单)

首先创建菜单,然后将用户重定向到addSectionsToMenu,在这里我设置了多个小部件(标题输入),分别带有多个项目(菜单项)

我的小部件可以保存并附加到菜单,但是我的WidgetItems不保存。我确信我的模型设置得很好,我花了2个小时整理了我的$数据结构。我只是觉得我需要弄明白一些事情

请帮忙

谢谢

~z~哈雷

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));

        }
    }
}

我一次保存多个模型时遇到问题,我通过调整验证选项解决了这个问题

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

对我来说没有完全意义,但是默认设置导致我的插入失败,因为相关记录没有从父记录的插入中获取外键。将选项更改为“first”(默认值)为“true”解决了问题,并且行正确显示在数据库中。

此->小部件->验证错误的值是多少?将config/core.php中的DEBUG常量设置为3,以查看SQL的完整调试和当前对象的转储。这两件事中的一件应该能帮助你找到哪里出了问题。我将一个数据数组传递到saveAll,如下所示$this->ExternalHeader->saveAll($data,array('validate'=>true))。没有记录出现。我也被卡住了。