如果我保存模型,getLastInsertId()
是否返回最后一个插入ID,或者它是否从我刚保存的行返回ID。换句话说,如果我这样做:
$this->Model->save($this->data);
__thisFunctionTakesAVeryLongTimeToExecute();
$insertId = $this->Model->getLastInsertId();
getLastInsertId()
是否从我上面保存2行的数据中返回ID。或者它是否返回创建的最新ID?
答案 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的存储过程,但它不是做事的框架方法。