这是我的简单代码:
$this->deleteAll(array('expiration <=' => CakeTime::format('Y-m-d H:i:s', time())));
我在查询结果中看到了这一点:
SELECT `Token`.`id` FROM `cake`.`tokens` AS `Token` WHERE `expiration` <= '2012-10-23 14:37:04'
DELETE `Token` FROM `cake`.`tokens` AS `Token` WHERE `Token`.`id` = (6)
简而言之,CakePHP 似乎首先检索了与条件对应的记录的 id,然后使用检索到的 id 进行删除。
但这没有任何意义,因为它可以直接使用给定的条件进行:
DELETE `Token` FROM `cake`.`tokens` AS `Token` WHERE `expiration` <= '2012-10-23 14:37:04'
为什么会这样?