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

时间:2016-08-03 06:51:22

标签: php mysql laravel-5

我是否有办法检索一个记录来自集合中date值的same记录?

我的记录是这样的,

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

任何想法,请帮忙吗?

3 个答案:

答案 0 :(得分:2)

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

如果您使用的是MySql,请尝试此操作:

select DISTINCT date from events where date IS NOT NULL

注意: DISTINCT也将null值视为一个独特的候选者。因此,对check条款null where建议{/ 1}}。

此外,DISTNCT is faster than Group By.

答案 1 :(得分:1)

实际查询:

SELECT * FROM events GROUP BY date

对于Laravel:

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

答案 2 :(得分:1)

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

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