Laravel Eloquent запрос для ежедневных, еженедельных и общих продаж - PullRequest
0 голосов
/ 30 июня 2019

Я разрабатываю приложение 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 голосов
/ 30 июня 2019

Использование Sum с условием Case может помочь.Не проверено, но в общих чертах, как бы я его нарисовал, проверь, получит ли оно тебя дальше.

$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');           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...