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

0

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

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

Синтаксическая ошибка, неожиданный токен INTEGER (1), рядом с "Днем")

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

$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 все еще не получается. Может ли кто-нибудь направить меня на это.

Теги:
datetime
phalcon
phalcon-orm

1 ответ

1
Лучший ответ

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

  • 0
    Я буду придерживаться функции даты php. Ура!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню