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>
答案 0 :(得分:1)
调用来自模型中的Model::exists()
函数。您可以在AppModel
或您需要阻止此操作的任何模型中覆盖该函数,并在本地缓存函数的结果。
例如,如果它在该函数中获得id = 8
,则可以使用一个数组来记住此ID已存在。