2009-12-08 16 views

cevap

10

One gotcha. $this->getDbTable()->insert($data);'u ararken, $ verilerinin tablonuzun "birincil anahtarı" nı içerdiğinden emin olmalısınız. Örneğin, otomatik artımsa id=null. Aksi halde, insert() son eklenen kimliği döndürmez.

+0

Teşekkürler Cong - Beni kurtardı - – Andre

+2

Bir not, bu zaten v1.11.6'da sabit olarak işaretlendi. Http://framework.zend.com/issues/browse/ZF-3837 http://framework.zend.com/issues/browse/ZF-3837 –

15

Bunu denediniz mi? Bu da iyi çalışıyor.

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

oylama manı thanx –

0

kodunun altına deneyin:

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

Son Eklenen değerini alın:

$this->tableGateway->lastInsertValue; 
+0

başka bir kullanıcı daha sonra bir kayıt eklediyse, lastInsertValue en son eklenen kimliği genel olarak veya belirli bir işlem için kullanılır. -? – Katia

0

da newId işlevi yoktur, cadı sonraki yeni kimlik döndürür

verileri eklemek için , böylece yeni bir satır eklemek için kullanabilirsiniz.

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

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

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

Şimdi size $id ile istediğimizi yapabiliriz.