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

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()
Я надеюсь, что это сработает для вас...

это дает мне ниже ошибка stripos() ожидает параметр 1, чтобы быть строка, данный объект
Является ответом!

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

это дает такую ошибку: неопределенная функция: 7 ошибка: функция date_format (метка времени без часового пояса, неизвестно) не существует строка 1: select

@Farshad вы отметили свой вопрос с помощью MySQL. Это действительно ваша база данных, или вы, возможно, используете Postgres?

Ой да ее Постгрес извините я меняю тег

Мой обновленный ответ должен работать на вас.

да, это будет делать трюк спасибо за это и еще 1 вопрос Могу ли я сортировать их по дате тоже???

в случае, если кому-то это нужно, я сделал это с - > orderBy ('ym') в elequent
Помочь в развитии проекта: