【问题标题】:get row count according to the month in the date in Laravel根据 Laravel 中日期中的月份获取行数
【发布时间】:2018-11-25 02:43:49
【问题描述】:

我希望 laravel 中的查询按 dateofSale 月份的数据和同一月份的行数进行分组。

这是我的桌子

我想输出这样的东西

numberOfSales | Month
     2           Nov
     1           Oct

我该怎么做?

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • 它是 Laravel 5.7.12
  • 到目前为止您尝试过什么?您是否为此表设置了模型,或者您只是使用DB(查询构建)?
  • 是的,我设置了一个模型并尝试在控制器中获取数据
  • 型号是什么??

标签: laravel eloquent


【解决方案1】:

您应该能够实现您所追求的目标:

$data = \App\SaleData::selectRaw('COUNT(*) as count, YEAR(dateOfSale) year, MONTH(dateofSale) month')
    ->groupBy('year', 'month')
    ->get();

如果您不包括年份,那么您将在同一个月中包含不同年份的销售额,例如2017 年 10 月和 2018 年 10 月的销售额将一起计算。

【讨论】:

  • 我试过这个。当我用 dd($data) 检查它时,它没有给出输出
  • @PasinduSenarath 因为它没有给你想要的输出,或者它没有给你任何输出?
  • 它不给任何
  • @PasinduSenarath 你用\App\SaleData::all();得到任何结果吗?
  • 是的。 stackoverflow.com/questions/53465623/… 看看这个。我使用 die 和 dump 命令检查您的查询.. 它没有给出它.. 请帮助:(
【解决方案2】:

你可以试试

$data = SalesData::select(DB::raw('count('*') as `count`'), DB::raw('MONTH(dateOfSale) month'))
         ->groupBy(function($m) {
             return Carbon::parse($m->dateOfSale)->format('m');
         })->get();

不要忘记在控制器顶部导入碳和 DB,例如

use DB;
use Carbon\Carbon;

【讨论】:

  • 我收到一条错误消息,提示找不到 Class 'App\Http\Controllers\Model'
  • 用您的型号名称更改型号关键字
  • 我做了。然后它给出错误,找不到类'App\Http\Controllers\DB'
  • GroupBy 应该是 'month' 而不是闭包。
  • 我认为它不会按组获得月份。如果它的工作,那么我会更新我的答案
猜你喜欢
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多