При написании кода в CakePHP возникла проблема.CakePHP Состояние сравнения поля базы данных с формой mysql
Я хотел удалить все строки, срок действия которых меньше 1 часа(). Я не хочу использовать функцию PHP, такую как date() и т. Д., Поскольку мой часовой пояс PHP-сервера и часовой пояс сервера MYsql отличаются. Кроме того, мой токен сеанса истекает через 30 секунд, поэтому я не могу нести разницу во времени, если оба сервера неправильно синхронизируются с реальным временем.
Я записал этот код
$this->deleteAll(array('SESSION_TRANSFER.EXPIRE_TIME <' =>
DboSource::expression('CURRENT_TIMESTAMP - INTERVAL 1 MINUTE')));
Я ожидаю
SELECT `SESSION_TRANSFER`.`SESS_TRANS_ID`
FROM `DISE`.`T_SESSION_TRANSFER` AS `SESSION_TRANSFER`
WHERE `SESSION_TRANSFER`.`EXPIRE_TIME` <
CURRENT_TIMESTAMP - INTERVAL 1
MINUTE
LIMIT 0 , 30
Но это порождает ошибку
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column
'SESSION_TRANSFER.EXPIRE_TIME <' in 'where clause'
SQL Query: SELECT `SESSION_TRANSFER`.`SESS_TRANS_ID`
FROM `DISE`.`T_SESSION_TRANSFER` AS `SESSION_TRANSFER`
WHERE `SESSION_TRANSFER.EXPIRE_TIME <` = CURRENT_TIMESTAMP - INTERVAL 1 hour
Я также попытался это
$this->deleteAll(array('SESSION_TRANSFER.EXPIRE_TIME <'
=> 'CURRENT_TIMESTAMP - INTERVAL 1 MINUTE '));
Запрос не был собственно, как и ожидалось
SELECT `SESSION_TRANSFER`.`SESS_TRANS_ID`
FROM `DISE`.`T_SESSION_TRANSFER` AS `SESSION_TRANSFER`
WHERE `SESSION_TRANSFER`.`EXPIRE_TIME` < 'CURRENT_TIMESTAMP - INTERVAL 1 MINUTE '
Любое предложение? Я не хочу использовать вычисление даты функции PHP
Вы просто здорово это решение решить мою проблему каскадный слишком. Большое спасибо! –