как подсчитать количество сообщений за каждый месяц в laravel - PullRequest
0 голосов
/ 27 января 2020

Я хочу сделать диаграммы в своем приложении laravel и хочу показать, сколько постов было создано за каждый месяц, поэтому мне нужен своего рода API, как показано ниже:

{
count:22,
month:1-1-2020
},
{
count:18,
month:1-2-2020
}

вот что я пытался сделать:

       return Post::all()->groupBy(function($post) { // Get all posts as collection and apply groupBy method
            $post->created_at->format('F'); // ex: September
        });

но он не сработал для группировки отсчетов по месяцам, так есть ли способ достичь этого ??

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Вы можете попробовать агрегировать к DATE_FORMAT вашей даты с маской %Y-%m:

$results = Post::select(\DB::raw("DATE_FORMAT(created_at, '%Y-%m') AS ym, COUNT(*) AS cnt"))
->groupBy(\DB::raw("DATE_FORMAT(created_at, '%Y-%m')"))
->get();

Если ваша фактическая база данных будет Postgres, тогда аналогичный подход с использованием TO_CHAR должен работать :

$results = Post::select(\DB::raw("TO_CHAR(created_at, 'YYYY-MM') AS ym, COUNT(*) AS cnt"))
->groupBy(\DB::raw("TO_CHAR(created_at, 'YYYY-MM')"))
->get();
1 голос
/ 27 января 2020

здесь вы go

return Post::select(DB::raw('count(1) AS count'), DB::raw('DATE_FORMAT(created_at, "01-%m-%Y") AS month'))->groupBy(function($post) { // Get all posts as collection and apply groupBy method
     $post->created_at->format('01-m-Y'); // ex: 01-02-2019
})->get()

Я надеюсь, это будет работать для вас ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...