我刚刚继承了一些cakePHP代码,我对它(或任何其他php /服务器端语言)不是很熟悉。我需要将我添加到数据库中的项目的id设置为最后一项加一的值,最初我做了这样的调用:
$id = $this->Project->find('count') + 1;
但这似乎增加了我的页面加载大约8秒(这看起来很奇怪,因为数据库只有大约400项)但这是另一个问题。现在我需要一种更快的方法来查找数据库中最后一项的id,有没有办法使用find来快速检索给定表中的最后一项?
答案 0 :(得分:5)
这是设置id的非常糟糕的方法。
你知道,例如,MySQL支持INT字段的自动递增,因此会自动为你设置id吗?
建议的功能getLastInsertId
和getInsertId
仅在插入后才有效,并非总是如此。
我也无法理解你的通话会给你的座位加8秒。如果我在我的桌子上进行这样的呼叫(也有大约400条记录),呼叫本身只需要几毫秒。用户不会注意到任何延迟。
我认为您的数据库设置可能存在问题,因为这似乎不太可能。
另外请查看您的数据库是否支持自动增量(我无法想象这是不可能的),因为这是添加所需功能的最简单方法。
答案 1 :(得分:1)
我会尝试
$id = $this->Project->getLastInsertID();
$id++;
该方法可以在第2768行的cake / libs / model / model.php中找到
干杯!
答案 2 :(得分:0)
如果您正在寻找CakePHP3解决方案,则只需使用last()。
即:
List<Integer> intList = getData(Integer.class);
System.out.println(intList);
List<String> strList = getData(String.class);
System.out.println(strList);