Как подсчитать количество продуктов, зарегистрированных за день за последние 7 дней, используя Laravel - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть таблица с продуктами. В этой таблице у меня есть столбец с датой какастрата продуктов.

Я смотрел на Carbon и хотел внедрить метод в моем приложении Laravel, который бы отображал количество продуктов за последние 7 дней. .

В Java я использовал этот метод:

public Date getSevenDays() {
        Calendar cal = Calendar.getInstance(); 
        cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DATE) - 7);
        Date lastSevenDays = cal.getTime();
        return lastSevenDays;
    }

как я мог адаптироваться, используя Carbon, чтобы он возвращал количество продуктов, зарегистрированных за последние 7 дней? возвращаемое значение будет выглядеть так:

[6,4,18,11,5,16,7]

1 Ответ

2 голосов
/ 18 февраля 2020

Почему бы просто не получить все записи за последние 7 дней и сгруппировать по дате

use Carbon\Carbon;

$productsByDay = Product::where('created_at', '>=', Carbon::now()->subDays(7))
                ->groupBy('date')
                ->orderBy('date', 'DESC')
                ->get([
                DB::raw('DATE(created_at) as date'),
                DB::raw('COUNT(*) as "products"')
])->pluck('products','date')->toArray();
//I recommend key by date, so that if you have no products on a date, you still have the dates in order.

//you can pass timezone in now() method of carbon, if you timezone is different than the timezone stored in DB
...