快速查找数据库Cakephp中的最后一项

时间:2011-06-07 22:24:27

标签: cakephp

我刚刚继承了一些cakePHP代码,我对它(或任何其他php /服务器端语言)不是很熟悉。我需要将我添加到数据库中的项目的id设置为最后一项加一的值,最初我做了这样的调用:

$id = $this->Project->find('count') + 1;

但这似乎增加了我的页面加载大约8秒(这看起来很奇怪,因为数据库只有大约400项)但这是另一个问题。现在我需要一种更快的方法来查找数据库中最后一项的id,有没有办法使用find来快速检索给定表中的最后一项?

3 个答案:

答案 0 :(得分:5)

这是设置id的非常糟糕的方法。

你知道,例如,MySQL支持INT字段的自动递增,因此会自动为你设置id吗?

建议的功能getLastInsertIdgetInsertId仅在插入后才有效,并非总是如此。

我也无法理解你的通话会给你的座位加8秒。如果我在我的桌子上进行这样的呼叫(也有大约400条记录),呼叫本身只需要几毫秒。用户不会注意到任何延迟。

我认为您的数据库设置可能存在问题,因为这似乎不太可能。

另外请查看您的数据库是否支持自动增量(我无法想象这是不可能的),因为这是添加所需功能的最简单方法。

答案 1 :(得分:1)

我会尝试

$id = $this->Project->getLastInsertID();
$id++;

该方法可以在第2768行的cake / libs / model / model.php中找到

以及this SO page

干杯!

答案 2 :(得分:0)

如果您正在寻找CakePHP3解决方案,则只需使用last()。

即:

List<Integer> intList = getData(Integer.class);
System.out.println(intList);
List<String> strList = getData(String.class);
System.out.println(strList);