模型查询错误中的 Phalcon 日期时间

Anu*_*nup 1 php mysql datetime phalcon phalcon-orm

我正在尝试执行这样的查询:

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();
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我那个错误。现在我试过如下

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

虽然这个绑定没有给我一个错误,它给了我一个 0 结果但是我在表中插入了几行来检查这个,当我在 phpmyadmin 中执行查询时它工作正常,所以我假设可能有日期时间混合在我的 phalcon 库设置中,但是当我从 更改为 时1 DAY1 MONTH仍然没有结果。有人可以指导我吗。

Nik*_*lov 5

INTERVALDATE_SUBNOW()和其他类似的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();
Run Code Online (Sandbox Code Playgroud)

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'
    ));
});
Run Code Online (Sandbox Code Playgroud)

以下链接中的更多信息:

如何扩展: https : //forum.phalconphp.com/discussion/1748/date-sub-interval-mysql#C6291

方言类本身: https : //github.com/phalcon/incubator/blob/master/Library/Phalcon/Db/Dialect/MysqlExtended.php