为多个模型保存多个记录cakephp
嘿,伙计们,经过一个漫长的夜晚,我被深深地困住了 我正在创建一个应用程序,您可以在其中动态创建食物菜单,并设置这样的关系:菜单有许多小部件,小部件有许多WidgetItem(当然,WidgetItem belongsTo小部件,小部件belongsTo菜单) 首先创建菜单,然后将用户重定向到addSectionsToMenu,在这里我设置了多个小部件(标题输入),分别带有多个项目(菜单项) 我的小部件可以保存并附加到菜单,但是我的WidgetItems不保存。我确信我的模型设置得很好,我花了2个小时整理了我的$数据结构。我只是觉得我需要弄明白一些事情 请帮忙 谢谢 ~z~哈雷为多个模型保存多个记录cakephp,cakephp,associations,save,Cakephp,Associations,Save,嘿,伙计们,经过一个漫长的夜晚,我被深深地困住了 我正在创建一个应用程序,您可以在其中动态创建食物菜单,并设置这样的关系:菜单有许多小部件,小部件有许多WidgetItem(当然,WidgetItem belongsTo小部件,小部件belongsTo菜单) 首先创建菜单,然后将用户重定向到addSectionsToMenu,在这里我设置了多个小部件(标题输入),分别带有多个项目(菜单项) 我的小部件可以保存并附加到菜单,但是我的WidgetItems不保存。我确信我的模型设置得很好,我花了2个
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))。没有记录出现。我也被卡住了。