這是我需要做的過濾的想法:
if ($course == 'specific-course') {
$view = 'pages.course.specifc-course';
$id = '8';
}
// get current date and time
$currentDate = date('Y-m-t h:m:s');
// get the course data from the database
$events = DB::table('eventaries')->where('category', $id)->get();
// HERE I NEED TO IMPLEMENT A WAY TO CHECK IF THE
// START OF THE EVENT HAS ALREADY PASSED AND
// THEN SKIP THE COURSE
foreach ($events as $event) {
if ($event->start > $currentDate) {
return view($view, [
"events" => $events,
]);
}
}
它從資料庫表中獲取事件eventaries,然后根據特定的$idaka給出所有事件。網站的選單項。但目前無法過濾事件開始日期是否已超過
$currentDate. 我用上面的例子嘗試過,但它仍然給出了資料庫上的所有事件。它需要作為多個 $events (array) 傳遞,因為我需要在單獨的刀片中訪問它并在那里進行模板化。
這是刀片的樣子:
<div class="text-2xl">{{ $event->coursname }}</div>
<div>{{ $event->start }}, {{ $event->end }}</div>
所以我已經有了關于開始的資訊,可以將它與 比較,$currentDate但由于某種原因這行不通。
uj5u.com熱心網友回復:
如果您只需要尚未啟動的事件,最好在查詢中添加 where 子句,而不是獲取所有事件并在代碼中過濾它們:
$events = DB::table('eventaries')
->where('category', $id)
->where('start', '>', now())
->get();
uj5u.com熱心網友回復:
你有兩個“罪魁禍首”:
1.
// get the course data from the database
$events = DB::table('eventaries')->where('category', $id)->get();
foreach ($events as $event) {
if ($event->start > $currentDate) {
return view($view, [
"events" => $events,
]);
}
}
在查詢 (1) 中,您獲得所有事件,在 foreach (2) 中,您正在比較資料庫上每個事件的開始日期,如果您發現至少一個已經開始,則回傳包含所有$的視圖事件小號。
簡單的解決方案:洗掉 foreach 和 if 并回傳您的視圖。使用您的查詢過濾掉啟動的事件,如下所示:
$events = DB::table('eventaries')->where('category', $id)->where('start', '>', $currentDate)->get();
附錄:由于您使用的是 laravel,因此您可以使用模型而不是 DB 門面,例如:
Eventaries::whereCategory($id)->where('start', '>', $startDate)->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367522.html
