2009-12-08 20 views

Odpowiedz

10

Jedno uderzenie. Podczas wywoływania $this->getDbTable()->insert($data); musisz upewnić się, że $ dane zawierają "klucz podstawowy" twojej tabeli. Na przykład: id=null, jeśli jest to automatyczny inkrement. W przeciwnym razie insert() nie zwróci ostatniego wstawionego identyfikatora.

+0

Dzięki Cong - To mnie uratowało - – Andre

+2

Jedna uwaga, jest już oznaczona jako poprawiona w wersji 1.1.6. Zobacz http://framework.zend.com/issues/browse/ZF-3837 –

15

Czy próbowałeś tego? To również działa dobrze.

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

votup man thanx –

0

Spróbuj poniżej kodu:

Aby wstawić dane:

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

Get Ostatnia wartość brzmieniu:

$this->tableGateway->lastInsertValue; 
+0

co jeśli inny użytkownik wstawił rekord po, ​​lastInsertValue otrzyma ostatni wstawiony identyfikator w ogóle lub dla danej transakcji -wużywane -? – Katia

0

Istnieje również newId funkcja, czarownica Zwraca następny nowy identyfikator , dzięki czemu możesz go użyć do wstawienia nowego wiersza.

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

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

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

Teraz możesz robić, co chcesz, dzięki swojej $id.

Powiązane problemy