当我尝试这个能言善辩的查询,我得到0
作为结果,当我期待217
:查询不PHP工作,但在MySQL工作直接
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
]
什么可能会阻止雄辩实施正常工作?
一个想法......你使用'$ date'两次雄辩的查询,并在原两个不同的日期SQL,所以这两个不相同。 – Kryten
'$ date'两次是我原始代码的复制错误。我已更新以反映这一点。它最初应该是在不同时间的相同日期,但我改变它以允许在创建这篇文章的中途单独的日期。 – eComEvo
奇怪的是,即使使用相同的日期,只要时间跨度不同,但是无论它具有哪个日期,并且无论这些日期之间有多少记录,在执行时总是返回零结果PHP。 – eComEvo