Как определить последний идентификатор вставки в транзакции в 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 ответов


$lastInsertID = $connection->getLastInsertID();

вы можете попробовать оба способа, здесь 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;
}