我有一个模型ImportantDate
架构如下
Schema::create('important_dates', function (Blueprint $table) {
$table->increments('id');
$table->date('date');
$table->text('description');
$table->timestamps();
$table->softDeletes();
});
我想得到:
1)从当前日期(今天)和
开始的最后五个日期2)从当前日期(今天)开始的下一个五天
示例数据:
id Date description
1 2017-12-20 some description
2 2017-12-25 some description
3 2018-01-02 some description
4 2018-01-28 some description
5 2018-02-02 some description
6 2018-02-12 some description
7 2018-02-18 some description
8 2018-02-28 some description
9 2018-03-02 some description
10 2018-03-12 some description
在我ImportantDatesController.php
我尝试了一个查询,显示当前日期的最近日期,但我需要最近5个日期和接下来的5个日期。
public function index()
{
$upcoming_dates = ImportantDate::orderByRaw(' abs( timestampdiff(second, current_timestamp, created_at)) asc ')
->limit(5)
->get();
$recent_dates = ImportantDate::orderByRaw(' abs( timestampdiff(second, current_timestamp, created_at)) dsc ')
->limit(5)
->get();
return view('pages.dashboard', compact('upcoming_dates','recent_dates'));
}
期待急需的帮助。
谢谢。
答案 0 :(得分:3)
您可以where()
使用compare
条款upcoming
您的日期为previous
日期或orderBy()
日期。然后,您可以使用$upcoming_dates = ImportantDate::where('date','>', date('Y-m-d'))->orderBy('date')
->limit(5)
->get();
$recent_dates = ImportantDate::where('date','<', date('Y-m-d'))->orderBy('date', 'DESC')
->limit(5)
->get();
根据您的日期获取最新的5个。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
答案 1 :(得分:1)
DATE('Y-m-d')
将以给定格式提供当前日期。如果您需要获取最新的当前日期,可以使用添加>=
或<=
$upcoming_dates = ImportantDate::where('date' , '>', DATE('Y-m-d'))
->orderBy('id', asc)
->limit(5)
->get();
$recent_dates = ImportantDate::where('date', '<', DATE('Y-m-d'))
->orderBy('id', desc)
->limit(5)
->get();
答案 2 :(得分:1)
SELECT *
FROM table
WHERE id IN (SELECT id FROM table WHERE datetime = (SELECT MAX(datetime) FROM table))
ORDER BY id DESC
LIMIT 1