我想按年份和月份对帖子或新闻进行分组
例如这种格式
2019年4月[第1个帖子,第2个帖子] 5月[第1个帖子,第2个帖子]
2018年4月[第1个帖子,第2个帖子] 5月[第1个帖子,第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();
我希望这会对您有所帮助