Rumah > Soal Jawab > teks badan
Saya mempunyai tasks
表,该表有 status
和 deadline
lajur. Bagaimana untuk menukar status secara automatik kepada "Tamat tempoh" apabila tarikh semasa lebih besar daripada tarikh tamat tugas? Adakah terdapat pendengar acara masa nyata di Laravel?
Saya rasa inilah rupa kelas pendengar acara, tetapi saya tidak pasti apa yang perlu dilakukan seterusnya.
<?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; } }
P粉6836651062023-12-16 11:39:22
Terdapat pendengar acara masa nyata, tetapi mereka memerlukan tindakan untuk dicetuskan. Sebagai contoh, peristiwa ini dicetuskan apabila model dibuat, dikemas kini atau dipadamkan.
Tiada "pendengar" terbina dalam untuk ping setiap model menunggu perubahan medan yang anda tentukan.
Jika anda ingin mencetuskan logik lanjut (seperti menghantar e-mel) apabila tugasan tamat tempoh, lebih baik anda menggunakan penjadual untuk menyemak sama ada terdapat tugasan tertunggak baharu. Penjadual berjalan setiap minit - ditetapkan oleh cron.
P粉0927785852023-12-16 10:27:05
Sebab anda hanya menyemak tarikh. Cron anda hanya perlu dijalankan sekali pada tengah malam. Gunakan Penjadual Laravel untuk menyelesaikan kerja anda. Mula-mula buat kelas
class UpdateTasks { public function __invoke() { // do your task here...e.g., Tasks::whereDate('deadline','<',today())->update(['status'=>'expired']); } }
Kemudian dalam appConsoleKernel.php anda, kaedah jadual-
$schedule->call(new UpdateTasks())->daily();
Akhirnya konfigurasikan tugas cron pada pelayan anda untuk menjalankan arahan yang dijadualkan setiap hari pada tengah malam.
php artisan schedule:run
似水2023-12-16 15:18:34
Saya akan menggunakan GPT untuk membantu anda menjawab soalan anda Saya harap ia akan berguna