CakePHP:对SELECT计数(*)

时间:2016-03-07 20:16:48

标签: cakephp cakephp-2.6

CakePHP三次完成这个确切的查询:

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(*)。这是我的真正目标,例如:像save()一样工作的updateAll。假设updateAll也没有这个COUNT(*)

Custom paginate,我要么做错了,要么就是问题。

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

我只想让save()之类的另一个函数更新,以便我可以摆脱这些COUNT(*)查询,但我不确定CakePHP是否支持这样的事情。 / p>

1 个答案:

答案 0 :(得分:1)

调用来自模型中的Model::exists()函数。您可以在AppModel或您需要阻止此操作的任何模型中覆盖该函数,并在本地缓存函数的结果。

例如,如果它在该函数中获得id = 8,则可以使用一个数组来记住此ID已存在。