【问题标题】:Laravel 5.4 - Stats by monthLaravel 5.4 - 按月统计
【发布时间】:2017-07-18 13:31:06
【问题描述】:

我想统计所有状态为“可见”和“幽灵”的用户,如下所示:

public function getStatsUser() {
        $data = self::whereIn('state', array('Visible', 'Ghost'))
            ->count();

        return $data;
    }

但我希望每个月都从第一个用户那里获得这些数据,如下所示:

['Month', 'Data'],
['December 2016', 4000],
['January 2017', 4600],
['February 2017', 11020],
['March 2017', 5400]

对于日期,我有一行带有“created_at”,但不是该月的特定行。

我试过了,还是不行

  $data= self::select(DB::raw('count(*) as monthly_total'), DB::raw('MONTH(created_at) as month'))
            ->whereIn('state', array('visible', 'Ghost'))
            ->whereYear('created_at', '=', date('Y'))
            ->groupBy('month')
            ->count();

错误:

SQLSTATE[42S22]: Column not found: 1054 Champ 'month' inconnu dans group statement (SQL: select count(*) as aggregate from `oiseau` where `etat_actuel` in (Relaché, En convalescence) and year(`date_signalement`) = 2017 group by `month`)

感谢您的帮助!

【问题讨论】:

  • 你有这个状态的历史吗?当您只有用户的当前状态时,这是不可能的。
  • 是的,我有,我的 whereIn 没问题
  • 在这行DB::raw('MONTH(date_signalement) month')你错过了一个月前as
  • 我修复了这个问题,但没有任何改变

标签: php database laravel


【解决方案1】:

这应该让你开始:

self::selectRaw('CONCAT_WS(" ", MONTHNAME(created_at), YEAR(created_at)) as date, COUNT(*) as count')
    ->whereIn('state', array('visible', 'Ghost'))
    ->groupBy(DB::raw('YEAR(created_at)', MONTH(created_at)))
    ->get()

查询将返回一个包含日期和计数的对象集合。

可能最重要的部分是按年和月分组,您可以在那里使用函数而不是原始列。

PS:这将使您从 self 类中获得 Laravel 模型,它们实际上不是......所以可以将 self 替换为 DB::table('users') 或类似的。

【讨论】:

  • 它正在工作,我每个月/年都有一个收藏品,里面有很多奇怪的东西,其中有一个包含日期和计数的数组。
  • 但现在我不知道如何使用它:/
【解决方案2】:

你可以试试:

$data = self::whereIn('state', array('Visible', 'Ghost'))
             ->select(DB::raw('count(*) as monthly_total') , DB::raw('MONTH(created_at) month'))
             ->groupBy('month ')
             ->get();

如果月份存储在其他表中,请尝试加入查询。

【讨论】:

  • 很好,但我没有“月”行,它只是“created_at”所以我用你的答案尝试了其他方法,但它不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2015-06-24
  • 2021-01-16
  • 2011-03-30
相关资源
最近更新 更多