在特定的日期和列

问题描述:

在我的数据库Laravel计数结果我有以下记录:在特定的日期和列

id code product_amount   created_at 
1 ORD-1  250   2016-04-04 05:15:05 PM 
2 ORD-1  150   2016-04-04 05:15:05 PM 
3 ORD-2  450   2016-04-05 11:18:17 PM 
4 ORD-3  250   2016-04-06 04:30:25 PM 
5 ORD-3  300   2016-04-06 04:30:25 PM 
6 ORD-3  750   2016-04-06 04:30:26 PM 
7 ORD-4  650   2016-04-06 08:30:26 PM 
7 ORD-4  150   2016-04-06 08:30:27 PM 

现在我想的是我要算被放置在每一天的订单,所以输出应是:

count date 
    1 2016-04-04 // For ORD-1 
    1 2016-04-05 // For ORD-2 
    2 2016-04-06 // For ORD-3 and ORD-4 

,我试图到目前为止代码:

$ordersList = Order::latest(); 

$ordersListDate = $ordersList->selectRaw('date(created_at) as date') 
        ->groupBy('date')->get() 
        ->lists('date')->toArray(); 

$ordersListCount = $ordersList->select([ 
    DB::raw('DATE(created_at) AS date'), 
    DB::raw('COUNT(code) AS count') 
])->groupBy('date')->get()->lists('count')->toArray(); 

当我做上述控制器发出:

array:2 [▼ 
    0 => "2" 
    1 => "1" 
    2 => "5" 
] 

我抓我的头,因为很长一段时间,无法完成这件事。我知道必须有一些愚蠢的东西,我一定错过了或者没有考虑过,但我仍然处于学习阶段。

任何帮助,高度赞赏。谢谢。

+0

组按日期,代码 – splash58

+0

@ splash58尝试过为好,它没有工作.. –

你想这样的查询

select count(distinct code) count, date(created_at) as `date` 
    from orders 
    group by date 

,但我不能把它写在你的laravel语言:(

sqlfiddle已经回答了刚才。它是一个link

+0

您的解决方案已经为我工作..谢谢..你让我的一天... :) –

+0

很高兴帮助!祝你好运! – splash58

您必须在表格中添加列日期(YYYY-MM-DD格式),请记住不要使用DATETIME格式。然后你可以轻松地按日期组,并指望用下面的查询命令:

Order::select(array('date', DB::raw('COUNT(code) AS count')))->groupBy('date')->get(); 
+0

感谢您的答案,但我想这样做的'created_at'场只我不想用'DATETIME'列类型创建任何新列。 –

+0

即时通讯不知道你可以做到这一点与created_at列,除非你废除created_at的时间部分 –

+0

这是这段代码的作用:'DB :: raw('DATE(created_at)AS date')'。我已经放弃了时间部分,然后我想显示所需的输出。 –

Order::select(array(DB::raw('DATE(created_at) AS date')), DB::raw('COUNT(code) AS count')))->groupBy('date')->get(); 

我希望下面的查询将如此解决你的问题。我测试了它...

$ordersListCount = $ordersList->select([ 
    DB::raw('COUNT(DISTINCT code) as count'), 
    DB::raw('DATE(`created_at`) as date') 
])->groupBy('date')->get()->toArray();