내 질문 원격 소스에서 데이터를 끌어와 로컬 데이터베이스에 저장 관련하여. saveAll()
을 사용하면 상위 데이터가 올바르게 저장되지만 하위 데이터는 저장되지 않습니다. 이 기능에 CakePHP의 : 시려면(), 수입 (비 양식 관련) 관련 데이터가 저장되지
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와 같은 별도의 작업을 수행해야한다고 생각합니다. 그러나 방금 그걸 본 경우 또는 내가 방금 만든 경우를 기억하지 못합니다.
많은 관련 질문을 읽었지만 제공되는 솔루션 중 아무 것도 나를 위해 작동하지 않았습니다.
도움을 주시면 감사하겠습니다. 질문이 있으시면 언제든지 물어보십시오.
편집 : 이것은 header model이며 이것은 detail model입니다.
(업데이트 됨) 모델 관계를 정의 했습니까? 'LocalDetail'에 대한 모델 검증을 정의 했습니까? –
예, 두 모델을 구웠습니다. 그래서, 나는 유효성과 적절한 $ hasMany 관계가 있습니다. –