これは私の単純なコードです:
$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'
なぜこれが起こるのですか?