php - 查询不能在 PHP 中运行,但可以直接在 MySQL 中运行

标签 php mysql laravel laravel-4

当我尝试这个 Eloquent 查询时,当我期待 217 时,我得到 0 结果:

OrderItem::whereBetween(
        'created_at',
        [
            DB::raw("CONVERT_TZ('$start_date 09:00:00', '+00:00', '-06:00')"),
            DB::raw("CONVERT_TZ('$end_date 18:00:00', '+00:00', '-06:00')")
        ]
    )->count();

如果我在上面执行DB::getQueryLog(),复制编译的查询以使用 MySQL Workbench 在数据库上原始执行它,然后我得到预期结果 217。

select count(*) as aggregate 
from `order_items`
where
`created_at` between
CONVERT_TZ('2016-02-17 09:00:00', '+00:00', '-06:00') and
CONVERT_TZ('2016-02-29 18:00:00', '+00:00', '-06:00')

这是该查询日志的 var 转储:

array (3) [
    'query' => string (82) "select count(*) as aggregate from `order_items` where `created_at` between ? and ?"
    'bindings' => array (2) [
        Illuminate\Database\Query\Expression (1) (
            protected value -> string (53) "CONVERT_TZ('2016-02-17 09:00:00', '+00:00', '-06:00')"
        )
        Illuminate\Database\Query\Expression (1) (
            protected value -> string (53) "CONVERT_TZ('2016-02-29 18:00:00', '+00:00', '-06:00')"
        )
    ]
    'time' => float 0.41
]

什么可能会阻止 Eloquent 实现正常工作?

最佳答案

在您的查询中

OrderItem::whereBetween(
        'created_at',
        [
            DB::raw("CONVERT_TZ('$date 09:00:00', '+00:00', '-06:00')"),
            DB::raw("CONVERT_TZ('$date 18:00:00', '+00:00', '-06:00')")
        ]
    )->count();

我看到你使用了 $date 两次。所以 Laravel 生成的 SQL 命令如下所示:

select count(*) as aggregate from `order_items` where between CONVERT_TZ('2016-02-10 09:00:00', '+00:00', '-06:00') and CONVERT_TZ('2016-02-10 18:00:00', '+00:00', '-06:00'); 

您将在查询中得到相同的日期,该日期与复制sql命令时提到的不同。

我没有看到任何在这里不起作用的东西

关于php - 查询不能在 PHP 中运行,但可以直接在 MySQL 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35714968/

相关文章:

php - 如何将move_uploaded_file的错误记录到文件中

php - 我应该在 Windows Server 2012 R2 上使用 wampserver 还是在服务器上安装 apache、mysql 等

php - 如果输出等于 0000-00-00 00 :00:00,如何更改 echo 输出

php - 如何解析包含 PHP 对象数组的 JSON 对象?

sql - 替换 MYSQL 单元格中的字符串片段

php - 如何解决 laravel php artisan migrate 错误问题?

mysql - 选择最高的季节和剧集(mysql)

mysql - wordpress自定义mysql查询

php - Laravel:WHERE 子句中的数学

php - 带警告消息的 Laravel DB 查询