Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模型查询中的Phalcon日期时间错误_Php_Mysql_Datetime_Phalcon_Phalcon Orm - Fatal编程技术网

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

Php 模型查询中的Phalcon日期时间错误,php,mysql,datetime,phalcon,phalcon-orm,Php,Mysql,Datetime,Phalcon,Phalcon Orm,我正在尝试执行如下查询: 在phalcon模型查询表单中从创建日期子表(现在(),间隔1天)中选择*。但我一直得到以下错误: 语法错误,意外的令牌整数(1),接近“天” 按查询建筑如下所示 $donations = Donations::query() ->where('created_at > DATE_SUB(NOW(), INTERVAL 1 DAY)') ->execute(); $donations = Donations::quer

我正在尝试执行如下查询:

在phalcon模型查询表单中从创建日期子表(现在(),间隔1天)中选择*
。但我一直得到以下错误:

语法错误,意外的令牌整数(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();
上面的代码给了我这个错误。现在我已经试过了

$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天
更改为
1个月
时,仍然没有结果。有人能给我介绍一下吗。

INTERVAL
DATE\u 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'
    ));
});
更多信息请访问以下链接:

如何扩展:


方言类本身:

INTERVAL
DATE\u 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'
    ));
});
更多信息请访问以下链接:

如何扩展:


方言类本身:

我没有使用phalcon框架,但基于其他框架,我认为这与where函数需要知道它是本机sql功能这一事实有关。尝试->where(new RawValue('created_at>DATE_SUB(NOW(),INTERVAL 1 DAY)))我没有使用phalcon框架,但基于其他框架,我认为这与where函数需要知道它是本机sql功能这一事实有关。尝试一下->where(new RawValue('created_at>DATE_SUB(NOW(),INTERVAL 1 DAY)),我会坚持使用php的DATE函数。干杯我将坚持使用php日期函数。干杯