模型查询错误中的 Phalcon 日期时间
Phalcon datetime in model query error
我正在尝试执行这样的查询:
Select * from table where created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)
在 phalcon 模型查询表单中。但我不断收到以下错误:
Syntax error, unexpected token INTEGER(1), near to ' 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 结果,但是我在 table 中插入了几行来检查这个,当我在 phpmyadmin 中执行查询时它工作正常,所以我假设我的 phalcon 库设置中可能有日期时间混淆,但是当我从 1 DAY
更改为 1 MONTH
时仍然没有结果。有人可以指导我吗?
INTERVAL
、DATE_SUB
、NOW()
和其他类似的 MySQL 特性,不受 PHQL 支持。
您有两个选择:
1) 使用 PHP 日期重写您的 WHERE
条件:
$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 class:
$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
方言class本身:https://github.com/phalcon/incubator/blob/master/Library/Phalcon/Db/Dialect/MysqlExtended.php
我正在尝试执行这样的查询:
Select * from table where created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)
在 phalcon 模型查询表单中。但我不断收到以下错误:
Syntax error, unexpected token INTEGER(1), near to ' 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 结果,但是我在 table 中插入了几行来检查这个,当我在 phpmyadmin 中执行查询时它工作正常,所以我假设我的 phalcon 库设置中可能有日期时间混淆,但是当我从 1 DAY
更改为 1 MONTH
时仍然没有结果。有人可以指导我吗?
INTERVAL
、DATE_SUB
、NOW()
和其他类似的 MySQL 特性,不受 PHQL 支持。
您有两个选择:
1) 使用 PHP 日期重写您的 WHERE
条件:
$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 class:
$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
方言class本身:https://github.com/phalcon/incubator/blob/master/Library/Phalcon/Db/Dialect/MysqlExtended.php