CakePHP:对 SELECT count(*) 的调用数量惊人

CakePHP: Egregious amount of calls to SELECT count(*)

CakePHP 进行了 3 次精确查询:

SELECT COUNT(*) AS `count` FROM `mydb`.`players` AS `Player` WHERE `Player`.`id` = 8

当我运行:

$this->Player->id = $player_id;
$this->Player->save($save_array);

CakePHP 似乎这样做是为了检查 Model->save() 是否应该是创建或更新条目。我调查了这个问题并尝试执行以下操作:

Force CakePHP to do an update by providing the ID key in the saveFields。我认为如果它知道每次都更新就不需要做 COUNT(*) 了。这才是我真正的目标,在这里:类似于 updateAll 的东西可以像 save() 那样工作。假设 updateAll 也没有使这个 COUNT(*)

Custom paginate,要么是我做错了,要么不是问题所在。

Changing the model.php(!) 很危险,最终没有成功。

我只想拥有另一个像 save() 这样的功能,它可以简单地更新,这样我就可以摆脱这些 COUNT(*) 查询,但我不确定 CakePHP 是否支持这样的事情。

调用来自模型中的 Model::exists() 函数。您可以在您的 AppModel 或任何需要防止这种情况并在本地缓存该函数结果的模型中覆盖该函数。

例如,如果它在那个函数中得到 id = 8,你可以有一个数组记住这个 id 已经存在。