如何在 Laravel 8.* 中使用 Carbon 检查日期验证

How to check date validation with Carbon in Laravel 8.*

我有显示事件的索引页。

@foreach($events as $event)
    <div class="row">
        <div class="d-flex justify-content-center" style="margin: auto">
            <a href="{!! route('eventView', ['id' => $event->id]) !!}" style="text-decoration: none;">

                <div class="row" style="margin-top: 10 px">
                    <p style="display:block">{{$event->name}}</p>
                </div>
                @if($event->photo_patch)
                <img src="{{ asset('storage/' . $event->photo_patch) }}">
                @else
                <img src="placeholder" alt="...">
                @endif
            </a>
        </div>
    </div>
    </div>
    @endforeach

但问题是它显示所有事件,甚至是过去发生的事件。

我只想显示今天或未来日期的事件

所以我现在卡住了,我不知道下一步该怎么做。

我试过循环显示today/in未来的事件:

public function index()
    {
        $date = Carbon::today();
        $events = Event::where('date_of_event' >= $date)->get();

        foreach($events as $event){
            if($event->date_of_event >= $date){
                dump('Valid');
            }
            else{
                dump('Invalid');
            }
        }

        dump($events);
        dump($date);
        return view('frontend/index',['events'=>$events]);
    }

但我不知道以后如何在我的视图中显示它们。

我的第二个镜头是用这条线做的:

$events = Event::where('date_of_event' >= $date)->get();

但是我遇到了错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'where clause' (SQL: select * from `events` where `1` is null)

这并不准确,因为列名应该是有效的。

我该如何正确实施?

where 的默认运算符是 =。如果你想改变这个,你将使用第二个参数作为运算符,第三个参数作为你的值。

Event::where('date_of_event', '>=', $date)->get();

有关详细信息,请参阅 Where Clauses

要使该代码更短,您可以使用此代码

Event::whereDateOfEvent('>=', $date)->get();