如何在laravel中按年份和月份对新闻或帖子进行分组

时间:2019-04-24 10:37:00

标签: php mysql sql laravel

我想按年份和月份对帖子或新闻进行分组

例如这种格式

  

2019年4月[第1个帖子,第2个帖子] 5月[第1个帖子,第2个帖子]

     

2018年4月[第1个帖子,第2个帖子] 5月[第1个帖子,第2个帖子]

2 个答案:

答案 0 :(得分:0)

您可以结合使用laravel雄性和Carbon

use Carbon\Carbon;
$news = New::select('id', 'title', 'created_at')
->get()
->groupBy(function($date) {
    return Carbon::parse($date->created_at)->format('Y');
});

答案 1 :(得分:0)

默认情况下,我们只能使用主键进行分组。如果要使用其他属性添加分组依据,则必须通过在ONLY_FULL_GROUP_BY上添加以下代码来启用config/database.php sql模式

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

我希望这会对您有所帮助