从集合中的同一日期记录中只获取一条记录-Laravel


Get only one record from a same date records in the collection - Laravel

有没有办法从集合中具有same值的date记录中只检索一条记录?

我的记录是这样的,

id | date       | event_name   | type
----------------------------------------
1  | 2016-01-23 | event 1      | event 1
2  | 2016-01-23 | event 1      | event 2
3  | 2016-03-15 | event 2      | event 1
4  | 2016-03-15 | event 2      | event 2

因此,正如您所看到的,存在具有相同日期的记录,并且我只想获取同一日期的一个记录。所以我希望得到

2016-01-23, event 1
2016-03-15, event 2

我试过了,

$events = events::select( events.*',
            DB::raw('(select date from events where date = events.date) as events'))
            ->get();

但不幸的是,它不起作用。它给了我一个的empty阵列

dd(var_dump($events->toArray()));

有什么想法吗?

实际查询:

SELECT * FROM events GROUP BY date

对于Laravel:

$events = DB::table('events')->groupBy('date')->get(); 

如果您只是想为表中的每个冗余日期值获得一个结果,那么在查询中使用DISTINCT关键字。

如果您正在使用MySql:,请尝试此操作

select DISTINCT date from events where date IS NOT NULL

注意:DISTINCT认为null值也是一个不同的候选者。因此,建议将where子句中的null替换为check

此外,DISTNCTGroup By快。

如果使用Eloqunt,可以使用内置的groupBy方法:

Events::groupBy('browser')->get();