私の質問は、リモート ソースからデータを取得してローカル データベースに保存することに関するものです。を使用する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で関連する質問の多くを読みましたが、提供された解決策はどれもうまくいきませんでした。
どんな助けでも大歓迎です。ご不明な点がございましたらお気軽にお尋ねください。