我在cakephp中使用查询
$this->Menu->query("INSERT INTO frd_menus SET menuName= '".$_REQUEST['menuname']."'");
Run Code Online (Sandbox Code Playgroud)
如何在cakephp中获取此查询的最后一个插入ID?请指教.
XuD*_*ing 19
如果没有具体原因.
你应该用
$this->Menu->save($data)
Run Code Online (Sandbox Code Playgroud)
插入数据.然后你可以使用
$this->Menu->getLastInsertId();
Run Code Online (Sandbox Code Playgroud)
获取最后插入的ID.
Rém*_*ras 11
在大多数情况下,您应该使用模型方法来查询数据库.
Model::query() 存在运行复杂查询,这些查询比使用模型方法更复杂,或者在您无法选择的情况下运行.
在您的情况下,这非常有用,因为Model::save()在框架中运行回调Model::id为您设置属性.
所以,这允许你立即取回它:
if ($this->Menu->save($data)) {
$lastId = $this->Menu->id;
}
Run Code Online (Sandbox Code Playgroud)
小心!
另一方面,如其他回复所述,有以下方法:
Run Code Online (Sandbox Code Playgroud)Model::getLastInsertId()但您必须以这种方法非常小心和你SHOULD'NT用它,在这种使用情况下,因为它得到的最后插入,但不是你刚刚插入前面的代码语句中的最后!
如果用户(在服务器上的另一个并发请求期间)在
save()和之间保存数据getLastInsertId(),它将返回第二个用户的数据!那么,以下答案是这个用例的坏答案:
| 归档时间: |
|
| 查看次数: |
34226 次 |
| 最近记录: |