0

私の質問は、リモート ソースからデータを取得してローカル データベースに保存することに関するものです。を使用する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'). を使用する場合は、validateMany のような別の処理を行う必要があると思いますがsaveAll()、そのようなものをどこで見たのか、それとも単にでっち上げたのか思い出せません。

SOで関連する質問の多くを読みましたが、提供された解決策はどれもうまくいきませんでした。

どんな助けでも大歓迎です。ご不明な点がございましたらお気軽にお尋ねください。

編集: これはヘッダー モデルで、これは詳細モデルです。

4

1 に答える 1

0

問題は、これらのレコードがまだ存在しないことだと思います。ドキュメントによると

関連するモデルレコードのどちらもシステムにまだ存在しない場合(たとえば、新しいユーザーとそれに関連するプロファイルレコードを同時に保存する場合)、最初にプライマリモデルまたは親モデルを保存する必要があります。

あなたは例でここでもっと読むことができます。

于 2012-05-08T01:23:01.947 に答える