2016-03-22 73 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']; 
    } 
相关问题