Вы можете сделать это несколькими разными способами, наиболее эффективный способ - на уровне базы данных.Вы можете сделать ваш запрос примерно таким:
$blogs = Blog::where('publishes_on', '<=', now())->get()
Вы также можете абстрагировать это, если вы предпочитаете область запроса.Чтобы сделать это, добавьте в вашу модель следующий метод:
public function scopePublished($builder)
{
$builder->where('publishes_on', '<=', now());
}
Это позволит вам изменить его на:
$posts = Blog::published()->get()
Таким образом, единственные посты, которые вы будете пропускатьна ваш взгляд будут те, которые опубликованы.
Опция 2
Второй вариант - сравнить дату / время в представлении.Например:
@foreach($blogs as $blog)
@if(\Carbon\Carbon::parse($blog->publishes_on)->gte(now()))
<div>
<h1>{{ $blog->title }}</h1>
// etc. etc.
</div>
@endif
@endforeach
Однако этот способ не будет таким быстрым.Это потому, что вы сравниваете даты и время на стороне PHP для каждой итерации.Чем больше сообщений вы отображаете, тем больше времени потребуется для загрузки страницы.
Заключение
Вероятно, это лучше всего делать на уровне базы данных.Можно использовать только предложение where, но область запроса может сделать его немного более читабельным.
Надеюсь, это поможет.