2015-02-09 22 views
15

Tôi đang sử dụng yii2 khuôn khổ php. Tôi muốn chèn bản ghi vào cơ sở dữ liệu bằng cách sử dụng transaction. Làm cách nào tôi có thể nhận id được chèn sau cùng bằng cách sử dụng createCommand().Cách lấy id được chèn cuối cùng trong yii2 bằng cách sử dụng createCommand?

Vui lòng kiểm tra sau mã,

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

Trả lời

5

Bạn có thể làm điều này bằng:

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

thể trùng lặp của [Làm thế nào để phát hiện ID chèn cuối cùng trong giao dịch trong Yii bằng DAO ?] (http://stackoverflow.com/questions/24014286/how-to-detect-the-last-insert-id-within-a-transaction-in-yii-using-dao) – Sadikhasan

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

Sau đó gọi hàm getLastInsertID,

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

Điều này có an toàn với điều kiện chủng tộc không? ? Ví dụ. người dùng A chèn vào 'các mục' và id của hàng vừa được chèn này là 5 và trước khi một cuộc gọi' getLastInsertID() 'người dùng B chèn một hàng khác. Bây giờ một cuộc gọi cho biết phương pháp. Anh ta sẽ nhận được 5 hay 6? – DBX12

+0

chức năng tĩnh công cộng getAutoIncrement ($ table_name) { $ q = new Query(); $ res = $ q-> chọn ("AUTO_INCREMENT") -> từ ('INFORMATION_SCHEMA.TABLES') -> trong đó ("TABLE_SCHEMA = DATABASE() VÀ TABLE_NAME = '". $ Table_name. "'") -> một(); nếu ($ res) trả về $ res ["AUTO_INCREMENT"]; trả về false; } – yousef

Các vấn đề liên quan