2016-03-01 133 views
0

當我嘗試這個能言善辯的查詢,我得到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 
] 

什麼可能會阻止雄辯實施正常工作?

+1

一個想法......你使用'$ date'兩次雄辯的查詢,並在原兩個不同的日期SQL,所以這兩個不相同。 – Kryten

+0

'$ date'兩次是我原始代碼的複製錯誤。我已更新以反映這一點。它最初應該是在不同時間的相同日期,但我改變它以允許在創建這篇文章的中途單獨的日期。 – eComEvo

+0

奇怪的是,即使使用相同的日期,只要時間跨度不同,但是無論它具有哪個日期,並且無論這些日期之間有多少記錄,在執行時總是返回零結果PHP。 – eComEvo

回答

0

在查詢

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(); 

我看到你使用$兩次日期。因此,這是由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命令時。

我什麼也沒看見這裏

+0

'$ date'兩次是我原始代碼的複製錯誤。我更新了原文,以反映這一點。它最初應該是爲同一天,但我改變它允許在創建這篇文章的中途單獨的日期。 – eComEvo

0

不行試試這個

whereRaw("`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')") 
相關問題