Я использую Laravel Scout для поиска модели, а затем я использую фильтр для получения прошлых и предстоящих событий.
Вот мой метод:
public function search(Request $request)
{
$search = $request->get('q');
// Laravel Scout search() method
$users = User::search($search)->get();
$articles = Article::search($search)->get();
$events = Event::search($search)->get();
$today = Carbon::now();
$upcomingEvents = $events->filter(function ($events) use ($today) {
return Carbon::parse($events->startDate)->gt($today);
});
$pastEvents = $events->filter(function ($events) use ($today) {
return Carbon::parse($events->startDate)->lt($today);
});
$userCount = count($users);
$articleCount = count($articles);
$eventCount = count($events);
$upcomingEventCount = count($upcomingEvents);
$pastEventCount = count($pastEvents);
$templateCount = 0;
return view('pages.search.index', compact('search', 'users', 'articles', 'upcomingEvents', 'pastEvents', 'userCount', 'articleCount', 'upcomingEventCount', 'pastEventCount', 'templateCount'));
}
Я читал учебник здесь: https://scotch.io/tutorials/easier-datetime-in-laravel-and-php-with-carbon
Читая это, я видел, что вы можете получить сегодня, прямо сейчас, с Carbon::now()
.
Также есть lt()
для менее чем и gt()
для более чем.
В моем фильтре я взял дату начала и сравнил ее с Carbon::now()
, но дляпо какой-то причине он не возвращает то, что я ожидаю.
В моей базе данных startDate
- это VARCHAR
, но в моей модели событий я указал следующее:
protected $dates = [
'startDate', 'finishDate'
];
Этомоя таблица базы данных:
Но, на мой взгляд, я получаю это:
Я неправильно использую Carbon
?