2012-05-07 5 views
0

私の質問は、リモートソースからデータを取り出してローカルデータベースに保存することに関するものです。 saveAll()では、親データは正しく保存されますが、子データは保存されません。cakephp:with 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です。

+0

(更新済み)モデルリレーションを定義しましたか? 'LocalDetail'のモデル検証を定義しましたか? –

+0

はい、両方のモデルを焼きました。ですから、私は検証と適切な$ hasMany関係を持っています。 –

答えて

0

私は、これらのレコードがまだ存在しないことが問題だと思います。関連するモデルのレコードのどちらもまだ (たとえば、あなたが同時に新しいユーザーとその関連プロファイル レコードを保存したい)システム内に存在している場合、ドキュメント

によると、あなたが必要です最初にプライマリを保存するか、 親モデルを保存します。

さらにhereを読むことができます。

+0

あなたは正しいと思います。私はそれを調べてきました。ありがとう。 –

関連する問題