2012-03-19 2 views
6

saveAll()을 사용하여 CakePHP에 여러 레코드를 저장하면 테이블에 성공적으로 저장할 수 있습니다. 그러나 저장된 행의 ID를 검색하는 중에 문제가 발생합니다. LastInsertID()은 마지막 ID 하나만 반환합니다. saveAll()을 사용하여 삽입 한 마지막으로 삽입 한 ID를 모두 얻으려면 어떻게해야합니까?CakePHP의 saveAll()에서 삽입 된 ID 가져 오기

답변

23

afterSave 기능은 시려면 실행에 저장 각각의 후라고, 그래서 당신은 할 수 : 당신의 AppModel이


class AppModel extends Model { 
    var $inserted_ids = array(); 

    function afterSave($created) { 
     if($created) { 
      $this->inserted_ids[] = $this->getInsertID(); 
     } 
     return true; 
    } 
} 

당신은 어떤 모델에이 코드를 배치 할 수 있습니다에서 그것은 잘 작동합니다. 그런 다음 컨트롤러에서 시려면 후 ID를 반환하려면 다음과 같이 그렇게 할 것입니다 : AppModel이 :


if($this->Post->saveAll($posts)) { 
    $post_ids=$this->Post->inserted_ids; //contains insert_ids 
} 

내가이 시도하지만 오류를 정의되지 않은 속성을 던지고, 그것은

+0

고맙습니다 수 디르 희망이 도움 inserted_ids을 내 컨트롤러에 , 이유는 무엇입니까 .. ?? – Vineet

+0

@ vin.it 전에 var를 제거하십시오 $ inseted_ids – Ehtesham

+0

@ehtesham : 고맙습니다 ehtesham.i 시도했지만 여전히 같은 오류가 발생합니다. 다른 가능성은 ..? – Vineet