Laravel雄辩地查询每日,每周和整体销售额

时间:2019-06-30 17:14:10

标签: laravel eloquent

我正在使用该模型类开发用于每天,每周和整体销售的Laravel应用程序。

模型

class Sales extends Model
{
    protected $table = 'sales';

    protected $fillable = [
        'id',
        'store',
        'amount',
        'created_at'
    ];
}

我想显示每日,每周和整体销售额。这应该基于商店并按商店分组。我已经在控制器下面编写了此代码,但是不知道如何完成它。

控制器

public function sales()
{
    $billings = DB::table("sales")
        ->select("sales.store", DB::raw("SUM(sales.amount) as total_amount"))
        ->groupBy("sales.store")
        ->orderByRaw('sales.store ASC');

    return view('report.sales');
}

日期是created_at,它是DateTime。如何使我的代码包含每日,每周和总体销售额?我想要实现以下目标。

sales_report

1 个答案:

答案 0 :(得分:0)

在案例条件下使用总和可能会有所帮助。没有经过测试,但粗略地讲我会如何拟订它,检查它是否能使您进一步受益。

$billings = DB::table("sales")
    ->select(
        "sales.store",
        DB::raw("SUM(CASE WHEN created_at >= NOW() - INTERVAL 1 WEEK THEN amount ELSE 0 END) weekly_sales",
        DB::raw("SUM(CASE WHEN created_at >= NOW() - INTERVAL 1 MONTH THEN amount ELSE 0 END) monthly_sales",
        DB::raw("SUM(CASE WHEN created_at >= NOW() - INTERVAL 1 YEAR THEN amount ELSE 0 END) yearly_sales",
        DB::raw("SUM(amount) total_sales")
    )
    ->groupBy("sales.store")
    ->orderByRaw('sales.store ASC');