2016-03-22 103 views
2

可以說我有3個訂單,我的數據庫獲取每天兩個日期之間的所有訂單

1-1-16 
    1-4-16 
    1-15-16 

我想要做的是顯示出與兩個日期之間的每天訂單的圖​​表。例如

1-1-16/ 1-5-16

我想是

1-1-16  ,1 
1-2-16  ,0 
1-3-16  ,0 
1-4-16  ,1 
1-5-16  ,0 

我應該如何得到的日期數據時,有沒有訂單? 我有一個帶有created_at字段的訂單模型,我可以在其上運行查詢。

目前我得到的日期這樣分組的訂單:

$variable = Order::select('created_at', DB::raw('sum(total) as totals'), DB::raw('sum(shipping) as totalshipping'))->groupBy(DB::raw('DAY(created_at)'))->OrderBy('created_at', 'desc')->get(); 

這給了我每天的訂單,但不返回沒有訂單的日子。

+0

你嘗試什麼嗎? – Gokigooooks

+0

以及如何顯示圖表?你使用js插件來接受json嗎? – Gokigooooks

+0

@ gokigooooks我會在幾分鐘內發佈我的代碼,我可以得到按日期分組的訂單,但只有在訂單已經存在的情況下。 js插件是無關緊要的問題是獲取數據,但是爲了上下文添加它。 –

回答

2

我這樣做:

use Carbon\Carbon; 
$oders = Order::select('id', 'created_at') 
    ->get() 
    ->groupBy(function($date) { 
     return Carbon::parse($date->created_at)->format('d'); // grouping by date 
}); 

對於你沒有訂單他們日期:

$start = new DateTime('2016-01-01'); 
$end = new DateTime('2016-05-01'); 
$interval = DateInterval::createFromDateString('1 day'); 
$range = new DatePeriod($start, $interval, $end); 

foreach ($range as $day) 
    // check if the $orders[i]->created_at != $day->format("Y-m-d") 
+0

感謝您的建議,但是這個dosnt給我沒有訂單的日期的結果。 –

+1

@SvenB我更新了答案。也許它有幫助。 –

0

我建議創建所需的範圍,然後連接內的訂單內的日期日期

創建範圍與碳

note這是假定您正在使用具有開始日期,結束日期和訂單日期的碳對象。

if 不是我強烈建議您使用他們他們內置的laravel。時間戳(created_at,updated_at)默認爲碳對象。

$start_date = Carbon\Carbon::createFromFormat('d-m-Y', '11-06-2016'); 
$end_date = Carbon\Carbon::createFromFormat('d-m-Y', '11-23-2016'); 
$date_range = []; 


//containing the dates from the query and count of orders 
$i = 0; 
for($date = $start_date; $date->lte($end_date); $date->addDay()) { 

    $date_range[$i]['date'] = $date->format('m-d-Y'); 
    foreach($orders as $order) 
    { 
     if($date==$orders->created_at) 
     { 
      $date_range[$i]['orders'] = $order->totals; 
     } 
     else 
     { 
      $dates_range[$i]['orders'] = 0; 
     } 
    } 
    $i++; 
} 

現在你可以做這樣的事情

foreach($date_range as $date) 
    { 
     echo 'date: '.$date[date]. orders : .$date['orders']; 
    } 
相關問題