как узнать количество постов за каждый месяц в ларавеле

как узнать количество постов за каждый месяц в ларавеле

27.01.2020 10:25:24 Просмотров 27 Источник

я хочу сделать диаграммы в моем приложении 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
        });

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

У вопроса есть решение - Посмотреть?

Ответы - как узнать количество постов за каждый месяц в ларавеле / how to get the count of the posts for each month in laravel

Ronak Dhoot

27.01.2020 10:32:08

вот, держи.

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()

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

https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926753#comment105975819_59926753
это дает мне ниже ошибка stripos() ожидает параметр 1, чтобы быть строка, данный объект
Является ответом!
Tim Biegeleisen

27.01.2020 10:32:17

Вы можете попробовать агрегировать по 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();
https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926754#comment105975834_59926754
это дает такую ошибку: неопределенная функция: 7 ошибка: функция date_format (метка времени без часового пояса, неизвестно) не существует строка 1: select
https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926754#comment105975876_59926754
@Farshad вы отметили свой вопрос с помощью MySQL. Это действительно ваша база данных, или вы, возможно, используете Postgres?
https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926754#comment105976099_59926754
Ой да ее Постгрес извините я меняю тег
https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926754#comment105976134_59926754
Мой обновленный ответ должен работать на вас.
https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926754#comment105978049_59926754
да, это будет делать трюк спасибо за это и еще 1 вопрос Могу ли я сортировать их по дате тоже???
https://stackoverflow.com/questions/59926670/how-to-get-the-count-of-the-posts-for-each-month-in-laravel/59926754#comment105980777_59926754
в случае, если кому-то это нужно, я сделал это с - > orderBy ('ym') в elequent
Закрыть X