2015-02-09 11 views
15

Ich verwende yii2 PHP-Framework. Ich möchte Datensatz in Datenbank unter Verwendung transaction einfügen. Wie kann ich die zuletzt eingegebene ID unter Verwendung von createCommand() erhalten?Wie bekomme ich letzte ID in yii2 mit createCommand?

Bitte überprüfen Sie folgenden Code,

$db = Yii::$app->db; 
$sql = $db->createCommand()->insert('user', [ 
          'name' => 'test', 
          'email_address' => '[email protected]', 
          'phone_number' => '432432424', 
          ])->execute(); 

Antwort

5

Sie können dies tun mit:

$lastInsertID = $db->getLastInsertID(); 
echo $lastInsertID; 
+1

möglich Duplikat von [Wie zu erkennen, die letzte Einfüge-ID innerhalb einer Transaktion in Yii mit DAO ?] (http://stackoverflow.com/questions/24014286/how-to-detect-the-last-inserts-id-within-a-transaction-in-yi-i-using-dao) – Sadikhasan

30
Yii::$app->db->createCommand($sql)->execute(); 

Dann Funktion getLastInsertID nennen,

$id = Yii::$app->db->getLastInsertID(); 
+2

Ist dies sicher gegen Rennbedingungen ? Z.B. Benutzer A fügt in 'items' ein und die ID dieser gerade eingefügten Zeile ist 5 und bevor A 'getLastInsertID()' aufruft, fügt Benutzer B eine andere Zeile ein. Jetzt ruft A diese Methode an. Wird er 5 oder 6 bekommen? – DBX12

+0

öffentliche statische Funktion getAutoIncrement ($ table_name) { $ q = new Query(); $ res = $ q-> wählen ("AUTO_INCREMENT") -> aus ('INFORMATION_SCHEMA.TABLES') -> where ("TABLE_SCHEMA = DATABASE() und TABLE_NAME = '".. $ Table_name "'") -> ein(); if ($ res) Rückgabe $ res ["AUTO_INCREMENT"]; Rückgabe false; } – yousef

Verwandte Themen