我正在使用 Laravel 构建一个应用程序。我正在使用 Eloquent 和 MySql 数据库。在我的 MySQL 数据库中,我有一个如下表 EVENTS:
id EVENT YEAR
1 event1 2000-05-27
2 event2 2018-01-01
3 event3 2000-02-12
4 event4 2000-06-03
这个例子只是为了简单起见,显然我的数据库随时发生数百个事件。
年份列中的数据采用“日期”格式
我需要从这个 MySQL 表中获取每年发生的事件的简历。在这个例子中是
year number of events
2000 3
2018 1
我这样做了:
$years = Event::groupBy('year')
->selectRaw('count(*) as total, year')
->get();
我明白了:
year number of events
2000 1
2018 1
2000 1
2000 1
因为列中的每个日期都不同(在示例表中:2000-02-12 !== 2000-06-03 !== 2000-05-27)。
我需要将每年发生的所有事件组合在一起,而不考虑月份和日期。
问题是:
即使事件发生在不同的日期和月份,如何按“年份”列分组但仅考虑年份?
最佳答案
既然您使用了 selectRaw,那么只需将日期转换为年份,这样您就可以像普通查询一样进行分组。
$years = Event::selectRaw('count(*) as total, YEAR(year) as year')
->groupBy('year')
->get();
关于MySQl:如何对 ('year' )具有日期格式的列进行分组,忽略月份和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52640937/