Php 如何使用DAO在Yii中检测事务中的最后一个插入ID?

Php 如何使用DAO在Yii中检测事务中的最后一个插入ID?,php,yii,transactions,dao,lastinsertid,Php,Yii,Transactions,Dao,Lastinsertid,这是源代码,我需要检测ID(参见下面两个查询之间的标记位置) 最合适的方法是什么 两种方法都可以尝试,这里getLastInsertID是方法,lastInsertID是属性 $lastInsertID = $connection->getLastInsertID(); $lastInsertID = $connection->getLastInsertID(); 或 要了解更多信息,我创建了这个来解决这个问题 public static function getAutoIncr

这是源代码,我需要检测ID(参见下面两个查询之间的标记位置)


最合适的方法是什么

两种方法都可以尝试,这里getLastInsertID是方法,lastInsertID是属性

$lastInsertID = $connection->getLastInsertID();
$lastInsertID = $connection->getLastInsertID();


要了解更多信息,我创建了这个来解决这个问题

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;
}

您尝试过使用CDbConnection类中的getLastInsertID()吗?()谢谢@AleksanderKseniya,这很有效!这在使用批后插入时不起作用,因为批插入的工作方式类似于堆栈,即使您获取LastInsertId,它也会返回记录,这实际上是数据库中的第一条新记录,但这是另一个用例
$lastInsertID = $connection->lastInsertID;
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;
}