2017-05-07 56 views
0

我有一組數據在MySQL數據庫中,名爲'events'的表格的時間戳格式爲06/May/2017 20:30:51,名爲'timestamp '使用Laravel查詢構建器選擇每天的前10個數據

每天,系統都會生成大量數據,但我只需要每天選擇10個數據。

當前查詢:

$events = DB::table('events') 
->select('events.id', 'events.nid', 'events.timestamp') 
->orderBy('events.id','desc') 
->get(); 

我如何使用查詢生成器實現這一目標。

進一步說明:

在一組數據庫的存在將讓說,100個數據:
15日的數據集01 /月/ 2017年
20日的數據集02 /月/ 2017年
12組上的日期數據03 /月/ 2017年
30上的日期數據集的04 /月/ 2017年
15組上的日期數據的05 /月/ 2017年
8組上的日期數據的06 /月/ 2017

我想什麼來實現的是一個查詢,將選擇:
10組數據上日期01 /月/ 2017年如果有
10集的最新數據的02 /月/ 2017年如果有
10集數據日期03/May/2017(若有)
10組數據日期04/05/2015如有
10組日期05/May/2017(如有)
10組數據日期06/2017年5月(如果有)

在單個查詢生成器中。

+0

使用' - >取(10)'查詢https://laravel.com/docs/5.4/queries#ordering-grouping-limit-and-偏移量 –

+0

使用take用於整個查詢數據。然而,我希望每天僅選擇10個數據用於整個查詢 –

+0

- > where('timestamp','>','some-start-date') - > where('timestamp','<','some - 結束日期')​​ –

回答

0

嘗試這樣:

$day_start = strtotime("2017-01-01 00:00:00"); 
$day_end = strtotime("2017-01-01 24:59:59"); 

$events = DB::table('events') 
    ->select('events.id', 'events.nid', 'events.timestamp') 
    ->andWhere('events.timestamp', '>' , $day_start) 
    ->andWhere('events.timestamp', '<' , $day_end) 
    ->orderBy('events.id','desc') 
    ->take(10); 
+0

感謝您的回覆,但這不是我要找的。我通過進一步的解釋編輯了這個問題 –