通过在 cakephp 中执行的最后一个查询获取所有插入记录的 ID

Posted

技术标签:

【中文标题】通过在 cakephp 中执行的最后一个查询获取所有插入记录的 ID【英文标题】:get ids of all inserted records by last query executed in cakephp 【发布时间】:2011-06-13 06:04:37 【问题描述】:

我可以找到最后插入记录的主键id如下:

$this->Model->save($record);
$id = $this->Model->getLastInsertId();

我正在寻找这样的东西:

$this->Model->saveAll($records);
$ids = $this->Model->getLastInsertIds();

我要插入 100 条记录,因此最好将它们全部插入到单个查询中。仍然需要几秒钟来执行用例。有没有办法通过最后一次查询获取所有插入记录的 id?

很多论坛都问过这个问题,但没有明确的答案。

【问题讨论】:

【参考方案1】:

我认为这可能有效,并且可能是您正在寻找的:

$this->Model->saveAll($records);
$id1 = $this->Model1->id();
$id2 = $this->Model2->id();
$id3 = $this->Model3->id();
...

记得用您要保存到的每个模型替换模型1、模型2、模型3。

你看过 cakephp 保存数据的教程吗?链接在这里: http://book.cakephp.org/view/1031/Saving-Your-Data

希望这会有所帮助。

【讨论】:

但是我在同一个模型中添加了所有 100 条记录。 你想要这个范围吗?例如7 - 106. 如果是这样,只需获取第一个和最后一个 id,你应该有你的范围

以上是关于通过在 cakephp 中执行的最后一个查询获取所有插入记录的 ID的主要内容,如果未能解决你的问题,请参考以下文章

多个 SQL 查询未在 Cakephp 中执行

PHP 在cakephp中获取模型的sql查询

在cakephp中获取模型的sql查询

CakePHP回调函数如何知道$ q是一个Query对象,哪个表执行查询?

如何从 CakePHP 3 中的查询对象获取参数

使用 PHP/CodeIgniter 在 MySQL 中获取最后执行的查询