как группировать новости или пост по годам и месяцам в laravel - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу сгруппировать посты или новости по годам и месяцам, как я могу делать такие вещи

этот формат, например

2019 апр [пост 1, пост 2] может [пост 1, пост 2]

2018 апр [пост 1, пост 2] мая [пост 1, пост 2]

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

По умолчанию мы можем создать группу только с первичными ключами.если вы хотите добавить группу с другими атрибутами, вы должны включить режим ONLY_FULL_GROUP_BY sql, добавив приведенный ниже код в config/database.php

'mysql' => [
    .....
    'modes' => [
        'ONLY_FULL_GROUP_BY',
    ],

рекомендуемых режимах:

'STRICT_ALL_TABLES',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ZERO_DATE',
'NO_ZERO_IN_DATE',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION',

один разВы включили режим, затем можете попробовать запрос здесь, который возвращает группу результатов по году и месяцу.

DB::table('posts')->groupBy([DB::raw("MONTH(posts_date)"), DB::raw("YEAR(posts_date)")])
->get();

Надеюсь, это поможет вам

0 голосов
/ 24 апреля 2019

Вы можете использовать комбинацию laravel eloquent и Carbon

use Carbon\Carbon;
$news = New::select('id', 'title', 'created_at')
->get()
->groupBy(function($date) {
    return Carbon::parse($date->created_at)->format('Y');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...