Phalcon datetime в модели запроса об ошибке

Я пытаюсь выполнить запрос, как это:

Select * from table where created_at > DATE_SUB(NOW(), INTERVAL 1 DAY) в форме запроса модели phalcon. Но я продолжаю получать следующую ошибку:

Синтаксическая ошибка, неожиданный токен INTEGER (1), около ‘DAY)’,

По построению запроса, как показано ниже

$donations = Donations::query()
->where('created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)')
->execute();

Приведенный выше код дает мне эту ошибку. Теперь я попробовал как ниже

$donations = Donations::query()
->where('created_at > :holder:')
->bind(["holder" => 'DATE_SUB(NOW(), INTERVAL 1 DAY)'])
->execute();

Хотя это связывание не дает мне ошибки, оно дает мне 0 результат, но у меня есть несколько строк, вставленных в таблицу, чтобы проверить это, и когда я выполняю запрос в phpmyadmin, он работает правильно, поэтому я предположил, что может быть сочетание datetime в моей настройке библиотеки phalcon, но когда я изменил с 1 DAY в 1 MONTH пока еще нет результата. Может ли кто-нибудь наставить меня на это.

0

Решение

INTERVAL, DATE_SUB, NOW() и другие подобные функции только MySQL и не поддерживаются PHQL.

У вас есть два варианта:

1) Перепишите свой WHERE условие с использованием даты PHP:

$date = date('Y-m-d', strtotime('-1 DAY')); // Modify according to your date format
$donations = Donations::query()
->where('created_at > :holder:')
->bind(["holder" => $date)
->execute();

2) Расширить MySQL классом диалекта:

$di->set('db', function() use ($config) {
return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
"host"         => $config->database->host,
"username"     => $config->database->username,
"password"     => $config->database->password,
"dbname"       => $config->database->name,
"dialectClass" => '\Phalcon\Db\Dialect\MysqlExtended'
));
});

Больше информации в следующих ссылках:

Как продлить: https://forum.phalconphp.com/discussion/1748/date-sub-interval-mysql#C6291

Сам класс диалекта: https://github.com/phalcon/incubator/blob/master/Library/Phalcon/Db/Dialect/MysqlExtended.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]