如何从雄辩的集合中获取GroupBy数量?

时间:2014-04-03 06:44:53

标签: php collections laravel

为了达到这个目的,我一直在寻找很多东西,但还没有找到解决方案。

我必须得到会议细节和重要性。我正在使用以下代码,但坚持在如何在日期分组集合后获取计数。

以下是代码:

$sessions = Session::where('api_token','1')
             ->orderBy('created_at', 'DESC')
         ->get(array(DB::raw('date(created_at) as v_date')));

//To get the total session counts -
$total_sessions = $sessions->count();

//To get the sessions that happened today -
$today_sessions = $sessions->filter(function($today)
{ if ($today->v_date == date("Y-m-d")) { return true; }})->count();

现在我使用groupBy()

对集合进行分组
$sessions->groupBy('v_date'));

但是如何从此集合中检索会话计数和日期。

预期产出:

2014-02-01 10
2014-02-02 11
2014-02-04 15
2014-02-06 70
2014-02-07 90
2014-02-08 100

1 个答案:

答案 0 :(得分:0)

如果您只是想获得每天的会话数,那么就不需要使用Eloquent,您只需使用查询构建器。

$sessions = DB::table('sessions')
            ->select(DB::raw('date(created_at) AS v_date, count(*) AS count'))
            ->where('api_token', '1')
            ->orderBy('v_date', 'desc')
            ->groupBy('v_date')
            ->get();

这将返回表示每行的对象数组:

array (size=1)
    0 => 
      object(stdClass)[346]
        public 'v_date' => string '2014-03-09' (length=10)
        public 'count' => int 2
    1 =>
      object(stdClass)[349]
        public 'v_date' => string '2014-03-08' (length=10)
        public 'count' => int 6