Как определить последний идентификатор вставки в транзакции в Yii с помощью DAO?
это исходный код, мне нужно определить идентификатор (см. отмеченную позицию между двумя запросами ниже).
$connection = Yii::app()->db;
$transaction=$connection->beginTransaction();
try {
$q = "INSERT INTO `someTable1` .... ";
$connection->createCommand($q)->execute(); // Single Row Inserted
// HERE!! How to get the last insert ID from query above
$q = "INSERT INTO `someTable2` ....
WHERE id = LAST_INSERT_ID_FROM_FIRST_QUERY ";
$connection->createCommand($q)->execute();
$transaction->commit();
} catch (Exception $e) {
// react on exception
$trans->rollback();
}
каков был бы наиболее подходящий способ сделать это?
3 ответов
вы можете попробовать оба способа, здесь getLastInsertID-метод, а lastInsertID-свойство
$lastInsertID = $connection->getLastInsertID();
или
$lastInsertID = $connection->lastInsertID;
дополнительная информация http://www.yiiframework.com/doc/api/1.1/CDbConnection
Я создал это, чтобы решить этот вопрос
public static function getAutoIncrement($table_name)
{
$q = new Query();
$res = $q->select("AUTO_INCREMENT")
->from('INFORMATION_SCHEMA.TABLES')
->where("TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '" . $table_name . "'")
->one();
if ($res)
return $res["AUTO_INCREMENT"];
return false;
}