CakePHP:getLastInsertId方法是否安全

时间:2011-06-28 09:08:08

标签: cakephp auto-increment

如果我保存模型,getLastInsertId()是否返回最后一个插入ID,或者它是否从我刚保存的行返回ID。换句话说,如果我这样做:

$this->Model->save($this->data);
__thisFunctionTakesAVeryLongTimeToExecute();
$insertId = $this->Model->getLastInsertId();

getLastInsertId()是否从我上面保存2行的数据中返回ID。或者它是否返回创建的最新ID?

3 个答案:

答案 0 :(得分:3)

不确定lastInsertId但是...为什么不使用$this->Model->id?保存信息后,最后插入的id将存储在那里

答案 1 :(得分:2)

我一直使用Model::getLastInsertID()的方式与尝试使用它的方式大致相同,并且没有任何问题。保存后,$this->Model->id基本上会做同样的事情。

但请记住$this->Model->id是可写的(即$this->Model->id = <some_number>),并不总是代表您刚刚插入的记录的ID。然而,Model::getLastInsertID()确实如此。

答案 2 :(得分:1)

Model::getLastInsertID从当前连接中检索最后插入的ID。所以当你没有从同一个连接插入时它是安全的。

为了使它更清晰,我相信你必须考虑如何引发这个错误,因为它不是那么简单。同一台计算机上的两个不同浏览器将使用不同的连接。我不确定在具有不同标签的同一浏览器上会发生什么。正如其他人之前所说,我从未遇到过这个问题。

最安全的方法,可能是通过一个返回插入的id的存储过程,但它不是做事的框架方法。