Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menambah fungsi pemadaman data automatik dalam laravel

Bagaimana untuk menambah fungsi pemadaman data automatik dalam laravel

PHPz
PHPzasal
2023-04-23 10:21:49804semak imbas

Dengan pembangunan berterusan aplikasi Internet, rangka kerja pembangunan Web juga muncul tanpa henti. Antaranya, Laravel adalah salah satu rangka kerja pembangunan PHP yang paling popular dan digunakan secara meluas dalam semua lapisan masyarakat. Artikel ini akan memperkenalkan cara menambah fungsi pemadaman data automatik dalam Laravel.

1. Latar belakang masalah

Apabila membangunkan aplikasi web, kami mungkin perlu memadamkan beberapa data yang tidak berguna secara kerap untuk mengosongkan ruang dan meningkatkan kecekapan sistem. Sebagai contoh, kami perlu memadamkan pendaftaran pengguna tetapi tidak mengaktifkan akaun selepas julat masa tertentu, atau memadam beberapa maklumat sesi tamat tempoh, dsb.

Untuk keperluan ini, pemadaman data dengan kerap, kami boleh menulis tugas berjadual secara manual untuk melaksanakan operasi pemadaman data pada titik masa yang ditentukan. Walau bagaimanapun, terdapat masalah berikut dengan menulis tugas berjadual secara manual:

  1. Pengurusan masa menyusahkan dan operasi pemadaman perlu dilakukan secara manual sekali-sekala.
  2. Ia terdedah kepada ralat, terutamanya apabila berbilang jadual yang berkaitan perlu dipadamkan pada masa yang sama Pelaksanaan manual terdedah kepada ralat logik.

Untuk tujuan ini, kita perlu membangunkan mekanisme untuk memadam data secara automatik untuk memudahkan proses pemadaman data dan mengurangkan kemungkinan ralat.

2. Mekanisme pemadaman automatik Laravel

Dalam Laravel, kita boleh mencapai kesan pemadaman data secara automatik melalui mekanisme "penghapusan lembut" yang disediakan oleh Eloquent ORM. Pemadaman lembut bermakna apabila kami memadamkan baris data dalam pangkalan data, kami tidak memadamkannya secara langsung, tetapi menetapkan medan deleted_at baris data kepada nilai cap waktu bukan kosong.

Dengan menggunakan mekanisme pemadaman lembut dalam model Laravel, kita boleh mencapai fungsi berikut:

  1. Apabila kita memanggil kaedah delete() untuk memadam rekod, deleted_at rekod Medan akan diberikan nilai cap masa secara automatik;
  2. Apabila kami memanggil kaedah restore() untuk memulihkan rekod, nilai medan deleted_at asal rekod akan dikosongkan; Apabila kaedah forceDelete() memadamkan rekod secara kekal, nilai medan deleted_at rekod tidak mempunyai kesan.
  3. Ia boleh dilihat bahawa mekanisme pemadaman lembut boleh memulihkan data yang dipadam secara sejarah dengan mudah, dengan itu menyembunyikan rekod yang dipadam dengan berkesan tanpa menjejaskan integriti pangkalan data.

3 Langkah untuk memadam data secara automatik

Dalam Laravel, kami boleh menggunakan arahan Artisan untuk memadam data dengan kerap. Kaedah pelaksanaan khusus adalah seperti berikut:

Buat kelas arahan Console
  1. Pertama, kami mencipta kelas arahan dalam direktori appConsoleCommands dan mewarisi kelas IlluminateConsoleCommand. Semasa proses pembangunan, kami boleh mengubah suai dan melanjutkan kelas ini mengikut keperluan kami sendiri.

Tulis kaedah untuk memadam data secara automatik
  1. Dalam kelas CustomDeleteCommand, kita perlu menulis kaedah bernama delete() dan melaksanakan logik data yang perlu dipadamkan secara automatik. Contohnya:

Dalam kod di atas, kami mentakrifkan masa tamat $expiredTime, dan kemudian menggunakan DB dan Eloquent ORM Laravel untuk memadamkan rekod yang sepadan dalam jadual pengguna dan siaran.
/**
 * Execute the console command.
 *
 * @return void
 */
public function handle()
{
    $now = now(); //当前时间
    $expiredTime = $now->subDay(7); //过期时间为一周前

    //删除users表中deleted_at字段大于$expiredTime的记录
    DB::table('users')
        ->where('deleted_at', '<&#39;, $expiredTime)
        ->delete();

    //删除posts表及其关联的comments表中deleted_at字段大于$expiredTime的记录
    Post::whereHas('comments', function ($query) use ($expiredTime) {
        $query->where('deleted_at', '<&#39;, $expiredTime);
    })->where('deleted_at', '<&#39;, $expiredTime)->delete();
}

Perlu diambil perhatian bahawa kami menggunakan kaedah whereHas() Eloquent ORM untuk memadamkan rekod yang memenuhi syarat dalam jadual siaran dan jadual ulasan yang berkaitan dengannya.

Daftar arahan untuk memadam data secara automatik
  1. Akhir sekali, kita perlu mendaftarkan perintah CustomDeleteCommand ke dalam senarai arahan Artisan supaya kita boleh menjalankan arahan dalam terminal.

Kami boleh mendaftarkan arahan ini dalam kaedah jadual dalam fail appConsoleKernel.php. Contohnya:

Kod di atas melaksanakan fungsi melaksanakan CustomDeleteCommand secara automatik setiap hari. Kami juga boleh mengubah suai kaedah ini mengikut keperluan untuk melaksanakan fungsi pemadaman data berjadual tersuai.
protected function schedule(Schedule $schedule)
{
    $schedule->command('delete:data')->daily();
}

4. Ringkasan

Artikel ini memperkenalkan kaedah memadam data secara automatik dalam Laravel. Dengan menggunakan mekanisme pemadaman lembut Eloquent ORM, kami boleh memadam data tidak berguna secara automatik dalam julat masa tertentu, dengan itu mengurangkan tekanan memadam data secara manual dan meningkatkan kecekapan aplikasi web.

Dalam pembangunan sebenar, kami boleh mengubah dan mengembangkan kaedah ini mengikut keperluan untuk memenuhi keperluan perniagaan yang berbeza. Semoga artikel ini berguna kepada pembangun Laravel.

Atas ialah kandungan terperinci Bagaimana untuk menambah fungsi pemadaman data automatik dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn