Я изучаю Laravel и создал базовый блог c. Теперь я пытаюсь создать что-то похожее на автоблог, где сообщения меняют статус на основе start_date или end_date. Итак, я создал таблицу enum в своей миграции со статусами, которые мне нужно использовать. Прямо сейчас я пытаюсь изменить статус сообщения на Предстоящее, если дата и время больше, чем сегодня, но мне не повезло. Первоначально я создал событие и поместил приведенный ниже код в слушатель, но работает (или не работает) так же, как в наблюдателе. Я читал, что было бы лучше в наблюдателе, если будет несколько событий.
Поток будет, когда сообщение будет создано, проверьте start_date и измените статус, если дата больше, чем сегодня. Приведенный ниже код изменяет статус на Предстоящий, если я изменяю его на создание, а не на создание, но он все равно не учитывает start_date, поскольку добавляет его к каждому сообщению, независимо от start_date. Я пытался использовать оператор if, но я продолжал застрять. Что я пропускаю или делаю неправильно?
В конце концов, моя цель - чтобы сообщения автоматически меняли статус без каких-либо действий, инициированных пользователем. Возможно, я мог бы использовать Laravel очереди для этого, но я еще не дошел до этого. На данный момент я пытаюсь обойти это.
<?php
namespace App\Observers;
use App\Models\Post;
use Carbon\Carbon;
class PostObserver
{
public function created(Post $post)
{
$post = Post::whereDate('start_date', '>', Carbon::now()->toDateString(){
$post->post_status = 1 // 1 = Upcoming status
});
}
}