【问题标题】:Count visitors by month按月统计访问者
【发布时间】:2015-01-06 15:30:51
【问题描述】:

我有一个问题,所以我想构建一个按日期统计访问者的图表; 我的数据库里有

id          created_at
1           2014-11-09
2           2014-11-10
3           2014-11-08
4           2014-10-01
5           2014-10-05

所以我想得到

3 november
2 octomber

我想在 Laravel 中构建,我的代码是:

$aVisitors = $oVisitor::select([
                            DB::raw('DATE(created_at) AS date'),
                            DB::raw('COUNT(id) AS count'),
                            ])
                            ->groupBy('date')
                            ->orderBy('date', 'ASC')
                            ->get();

请帮助我。提前谢谢

【问题讨论】:

    标签: php laravel laravel-4 query-builder php-5.4


    【解决方案1】:

    你可以在这里使用:

    $aVisitors = $oVisitor::select([
        DB::raw("DATE_FORMAT(created_at, '%Y-%m') AS `date`"),
        DB::raw('COUNT(id) AS count'),
        ])
        ->groupBy('date')
        ->orderBy('date', 'ASC')
        ->get();
    

    这会给你类似的东西:

    2014-07 1
    2014-08 1
    2014-09 1
    2014-10 5
    

    【讨论】:

    • 我只得到一个结果 2014-09 6
    • @user3348229 显示您如何显示这些数据
    • echo json_encode($aVisitors); [对象 { date="2014-09", count=6}]
    • @user3348229 如果您的数据库中有数据,它应该可以工作。我在我的回答中将%d 固定为%m,我手动检查了查询:select DATE_FORMAT(created_at, '%Y-%m') AS date, COUNT(id) AS count from visits group by date order by date asc;,它也适用于我的 phpmyadmin 并获取所有数据。
    【解决方案2】:

    使用下一个

    GROUP BY DATE_FORMAT(created_at, '%Y-%d')
    

    或者这个

    GROUP BY YEAR(created_at), MONTH(created_at)
    

    在你的 laravel 代码中应该是这样的

    ->groupBy('YEAR(created_at), MONTH(created_at)')
    

    你也可以直接从mysql获取月份名称

    DB::raw("DATE_FORMAT(created_at, '%M') as monthName")
    

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      相关资源
      最近更新 更多