Rumah  >  Soal Jawab  >  teks badan

Laravel menukar status secara automatik dalam pangkalan data selepas tarikh tamat tempoh

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粉447002127P粉447002127332 hari yang lalu530

membalas semua(3)saya akan balas

  • P粉683665106

    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.

    balas
    0
  • P粉092778585

    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

    balas
    0
  • 似水

    似水2023-12-16 15:18:34

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

    606915a3b01db9aab05d290248494e3.jpg

    balas
    0
  • Batalbalas