ZF2, Wie man Letzte insert-id-Wert?
Ich bin stecken mit immer Letzte insert-id mit dem Zend framework 2 und ich habe bis auf diese...
Gibt es erprobte Kombinationen:
var_dump($this->tableGateway->insert($insert));
var_dump($this->tableGateway->lastInsertValue);
var_dump($this->tableGateway->getLastInsertValue());
var_dump($this->tableGateway->getAdapter()->getDriver()->getConnection()->getLastGeneratedValue());
Wert einfügen auf Tabelle, aber jede Zeile (außer der ersten, die gibt int "1") null zurück. Bitte Sag mir nicht, dass so ein großer Rahmen nicht die Möglichkeit, um Letzte insert-id-Wert!?
InformationsquelleAutor der Frage Piotr | 2013-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was ich verwenden:
InformationsquelleAutor der Antwort Jean Paul
Ich weiß, das war eine Weile zurück, aber nach verbringen eine Menge Zeit auf dieses problem wollte ich nach der Lösung für zukünftige Googler mit dem gleichen problem.
Das Problem ist der Pgsql-Treiber benötigt einen Namen der Sequenz zurück die Letzte id so:
Diese Werke in 2.3.1. Es wurde ein bug in 2.2.2 (und möglicherweise später) wo wurde der name nicht ein param-der getLastGeneratedValue im Treiber, so dass Sie würde haben, rufen Sie direkt die Verbindung.
Also das ist, was ich gefunden, indem man durch den code. Beste Lösung ist, um sicherzustellen, dass Sie haben ZF2 aktualisiert, und verwenden Sie
InformationsquelleAutor der Antwort skymander
In postgres müssen Sie setup SequenceFeature:
Nun
$this->tableGateway->getLastInsertValue();
funktionieren sollte.InformationsquelleAutor der Antwort Subey
Ok, ich weiß, die Frage ist nur wenige Monat alt ist, obwohl es kann nützlich sein, für diejenigen, die Suche nach einer Lösung für dieses problem, um die letzten Werte einfügen der beste Weg ist, um den Wert aus dem adapter interface
Dies funktionierte gut für mich für die mysql-Datenbank
InformationsquelleAutor der Antwort Raj
In
App\Model\AlbumTable
erstrecktAbstractTableGateway
bekomme ich die Letzte id von$inserted_id = $this->lastInsertValue;
als Beispiel:
InformationsquelleAutor der Antwort Aurimas
Dies funktioniert nicht mit oracle oci8, weil es noch nicht implementiert.
Siehe hier: https://github.com/zendframework/zf2/blob/master/library/Zend/Db/Adapter/Driver/Oci8/Connection.php#L343
InformationsquelleAutor der Antwort Name
Gibt es eine andere Möglichkeit zum hinzufügen FeatureSet zu TableGateway.
In Module.php Sie können definieren (Tabelle Benutzer zum Beispiel)
Aber es ist ein Fehler in SequenceFeature. Alles ist ok, wenn Sie mit öffentlichen schema. Wenn Sie auf einem anderen schema, das Sie verwenden sollten, Zend\Db\Sql\TableIdentifier;
In diesem Fall Module.php sollte sein:
In diesem Fall wird eine Fehlermeldung mit dem Postgresql query SELECT NEXTVAL, da die Funktion\SequenceFeature öffentlichen schema anstelle der Definition in erste argument für die Abfrage vorbereiten
SELECT NEXTVAL('user_id_seq')
In diesem Fall sql-Abfrage sollte
SELECT NEXTVAL('someSchema'.'user_id_seq')
InformationsquelleAutor der Antwort Tomasz Konopiński