2016-08-03 21 views
1

有沒有一種方法,我可以檢索只有一個date記錄與集合中的same值記錄?獲得來自同一日期的記錄只有一條記錄集合中 - Laravel

我的記錄是這樣的,

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

任何想法,請幫助嗎?

+0

其中'date'(這應該是可變的)= events.date – jitendrapurohit

回答

1

的實際查詢:

SELECT * FROM events GROUP BY date 

對於Laravel:

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

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

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

不應組由被用於執行一些計算?問題是隻得到一個日期值,沒有將日期分組爲一個值嗎? –

+0

groupby沒有要求進行計算 - 無論是在laravel還是底層數據庫中。如果沒有提供計算功能,它只會抓住第一個 - 它會崩潰。 – Chris

+0

@HariHarker旁註 - 我看到你現在在說什麼 - 但看着這個問題,他/她似乎對釋放那些額外記錄的想法感到滿意 – Chris

2

如果你只是想每得到一個結果冗餘表中的日期值,然後在查詢中使用DISTINCT關鍵字。

試試這個,如果你正在使用MySQL:

select DISTINCT date from events where date IS NOT NULL 

注: DISTINCT認爲null值也作爲一個獨特的候選人。所以,建議您在where條款checknull

此外,DISTNCT is faster than Group By.

相關問題