[英]Phalcon datetime in model query error
我正在尝试执行这样的查询:
在Phalcon模型查询表单中Select * from table where created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)
。 但我一直收到以下错误:
语法错误,意外令牌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中执行查询时它可以正常工作,因此我认为可能存在日期时间混合在我的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:
$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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.