Laravel menukar status secara automatik dalam pangkalan data selepas tarikh tamat tempoh
P粉447002127
P粉447002127 2023-12-15 13:36:40
0
3
532

Saya mempunyai tasks 表,该表有 statusdeadline 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粉447002127
P粉447002127

membalas semua(3)
P粉683665106

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粉092778585

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','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
似水

Saya akan menggunakan GPT untuk membantu anda menjawab soalan anda Saya harap ia akan berguna

606915a3b01db9aab05d290248494e3.jpg

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan