我有 tasks
表,該表有 status
和 deadline
欄位。當目前日期大於任務截止日期時,如何將狀態自動變更為「已過期」? Laravel 中有即時事件監 聽器嗎?
我想這就是事件監 聽器類別應該是什麼樣子,但我不確定下一步該做什麼。
<?php namespace AppEvents; use AppModelsTask; use IlluminateBroadcastingInteractsWithSockets; use IlluminateFoundationEventsDispatchable; use IlluminateQueueSerializesModels; class DeadlineExpired { use Dispatchable, InteractsWithSockets, SerializesModels; /** * The task instance. * * @var AppModelsTask */ public $task; /** * Create a new event instance. * * @param AppModelsTask $task * @return void */ public function __construct(Task $task) { $this->task = $task; } }
有即時事件偵聽器,但需要執行操作才能觸發。例如,當建立、更新或刪除模型時,就會觸發這些事件。
沒有內建的「偵聽器」來 ping 每個等待您定義的欄位變更的模型。
如果您想在任務過期時觸發進一步的邏輯(例如發送電子郵件),那麼您最好使用調度程序檢查是否有任何新的過期任務。 調度程序每分鐘運行一次 - 由 cron 設定。
因為您只檢查日期。你的 cron 只需要在午夜運行一次。使用 Laravel Scheduler 來完成您的工作。 首先創建一個類別
然後在你的app\Console\Kernel.php中,schedule方法-
最後在您的伺服器上配置一個 cron 作業以每天午夜執行計劃命令。
你的問題我用GPT幫你解答 希望有用
#