cakephp:使用saveAll(),导入(非表单相关)关联数据不保存

时间:2012-05-07 21:42:19

标签: php cakephp save

我的问题涉及从远程源提取数据并将其保存到本地数据库。使用saveAll(),可以正确保存父数据,但不会保存子数据。

protected function _saveLocal($_rekeyedData) {
        //Set the invoice header and line items models
        if (!isset($this->LocalHeader)) {
            $this->loadModel('LocalHeader');
            $this->LocalHeader->create();
//            $this->LocalHeader->set($_rekeyedData);
            if (!isset($this->LocalDetail)) {
                $this->loadModel('LocalDetail');
                $this->LocalDetail->create();
            }
        }

        if ($this->LocalHeader->saveAll($_rekeyedData, array('validate' => 'first'))) {
            $this->Session->setFlash('Your data has been saved.');
        } else {
            $this->Session->setFlash('Data load failed.');
        }
        debug( $this->LocalDetail->invalidFields() );
    }

在此功能中,我加载模型,然后尝试saveAll()。示例记录如下所示:

[1] => Array
    (
        [LocalHeader] => Array
            (
                [SOPNUMBE] => CR014076             
                [DUEDATE] => 2012-04-10 00:00:00
                [DOCDATE] => 2012-04-10 00:00:00
                [DOCAMNT] => 12000.00000
                [SUBTOTAL] => 12000.00000
            )

        [LocalDetail] => Array
            (
                [0] => Array
                    (
                        [ITEMNMBR] => BASIC SERVICE                  
                        [QUANTITY] => 1.00000
                        [UOFM] => EA       
                        [UNITPRCE] => 12000.00000
                        [TAXAMNT] => .00000
                        [CONTSTARTDTE] => 1900-01-01 00:00:00
                        [CONTENDDTE] => 1900-01-01 00:00:00
                        [SOPNUMBE] => CR014076             
                    )

            )

    )

所有保存的是LocalHeader记录。我的预感是它与array('validate' => 'first')有关。我认为在使用saveAll()时我需要像validateMany那样单独做一些事情,但是我不记得我在哪里看到过这样的东西,或者我刚刚做了什么。

我已经在SO中阅读了许多相关问题,但所提供的解决方案都没有为我工作。

感谢任何帮助。如果您有任何问题,请随时询问。

编辑: 这是header model,这是detail model

1 个答案:

答案 0 :(得分:0)

我认为问题在于这些记录都不存在。根据文件

  

如果系统中尚未存在任何关联的模型记录   (例如,您要保存新用户及其相关个人资料   记录在同一时间),你需要先保存主要,或   父模型。

您可以通过示例阅读更多here