2013-07-17 4 views
0

관련 항목으로 가득 찬 테이블을 인보이스에 대량 업데이트하려고합니다.FuelPHP ORM 일괄 업데이트 관련 개체

$_POST   Existing relations intended result 
===================================================== 
       item_id: 3   unlink 3 
item_id: 4  item_id: 4   update 4 
item_id: 5  item_id: 5   update 5 
item_id: null       create x 
item_id: null       create x 

은 내가 $_propertiesModel 예상하는 모두를 가지고있는 개체 JSON 배열을 밀어하고있다.

내 컨트롤러 방법은 다음과 같습니다 : 관련 객체 (invoice_items)를 저장할 때

public function update_items($invoice_id) 
{ 
    $invoice = Model_Invoice::find($invoice_id); 

    if ($items = MyInput::json()) 
    { 
     $invoice->from_array(array('invoice_items' => $items)); 
    } 

    $invoice->save(); 
} 

이는 PK 충돌 오류가 있습니다. $invoice->invoice_items에서 업데이트 된 개체가 모두 is_new() == true이기 때문입니다.

이 코드를 어떻게 구성해야합니까? 들어오는 모든 관련 항목에 대해 상태 추가/편집/삭제를 관리하고 싶지 않습니다. 이 업데이트를 만약

답변

0

, 당신은 항목을 업데이트 할 가져 오기 확인 : 내가 처음 가져 오는 경우

$invoice = Model_Invoice::find($invoice_id, array('related' => array('invoice_items')));

+0

이는 POST의 일부가 아닌 레코드를 삭제하지 않습니다. 이것은 POST의 항목을 제외하고 전체 데이터 세트를 대량으로 대체하려고하므로 기존의 객체에서 업데이트해야하는 문제의 일부입니다. – willoller

+0

필자는 현재 "수동으로"수동으로 수행하고 있습니다. - 매치, 업데이트 수행, 일치하지 않는 레코드 삭제 및 들어오는 레코드를 삽입하는 다른 루프를 반복합니다. 그냥 작동 해야하는 것 같습니다 :) :) – willoller

+0

저장되는 내용과 게시되는 내용 사이에 차이점을 만들어야합니다. 관련된 모든 항목 객체가있는 송장 오브젝트를 가져오고, 루프를 반복하고, 게시물에없는 항목을 삭제/설정 해제 한 다음 게시물을 반복하여 업데이트/작성하십시오. – WanWizard