2009-12-08 5 views

답변

10

하나의 잡화입니다. $this->getDbTable()->insert($data);으로 전화 할 때는 $ data에 테이블의 "기본 키"가 포함되어 있는지 확인해야합니다. 예를 들어, 자동 증가 인 경우 id=null입니다. 그렇지 않으면 insert()은 마지막으로 삽입 된 ID를 반환하지 않습니다.

+0

Thanks Cong - This saved me - – Andre

+2

한 메모, 이미 v1.11.6에서 수정 됨으로 표시되어 있습니다. http://framework.zend.com/issues/browse/ZF-3837을 참조하십시오 –

15

시도해 보셨습니까? 이것은 또한 잘 작동합니다.

//just after you call your insert($data) function .. use this 
$lastInsertId = $this->getAdapter()->lastInsertId(); 
+0

voteup man thanx –

0

코드 아래에보십시오 :

$this->tableGateway->insert($data); 

마지막 삽입 된 값을 가져옵니다 :

$this->tableGateway->lastInsertValue; 
+0

다른 사용자가 레코드를 삽입 한 후 lastInsertValue가 마지막으로 삽입 된 ID를 일반적으로 또는 특정 트랜잭션에 대해 가져온 경우 - 사용 된 경우 -? – Katia

0

newId 기능이있다, 마녀는 다음 새 ID를 반환

데이터를 삽입하려면 , 그래서 당신은 그것을 사용하여 새로운 행을 삽입 할 수 있습니다.

$id = $this->getDbTable->newId('table_name', 'id'); 

$data = array(
    'id' => $id, 
    'data' => $data 
); 

$this->getDbTable->insertRow('table_name', $data); 

지금 당신은 당신이 당신의 $id와 함께 원하는대로 할 수 있습니다.