Apabila membangunkan aplikasi web, biasanya kami perlu menambah, memadam, mengubah suai dan menyemak data, dan memadam data adalah salah satu operasi yang sangat penting. Walau bagaimanapun, dalam projek sebenar, kami selalunya perlu memulihkan data yang dipadamkan, jadi operasi pemadaman fizikal tradisional menyusahkan.
Untuk menangani masalah ini, rangka kerja ThinkPHP menyediakan fungsi pemadaman lembut, yang menukar operasi pemadaman kepada operasi pemadaman bertanda Dengan cara ini, data yang dipadam tidak akan benar-benar hilang daripada pangkalan data, tetapi akan ditambah ke jadual data Medan yang menunjukkan status pemadaman, yang boleh dipulihkan jika perlu.
Seterusnya, mari kita lihat pelaksanaan berkaitan pemadaman lembut rangka kerja ThinkPHP.
1. Cara melaksanakan pemadaman lembut
Tambahkannya pada jadual yang memerlukan pemadaman lembut Medan yang menunjukkan status pemadaman, contohnya:
ALTER TABLE `table_name` ADD `delete_time` BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '删除时间';
Antaranya, medan delete_time digunakan untuk merekodkan masa operasi pemadaman Jika medan ini tidak kosong, ini bermakna data telah dipadamkan.
Dalam fail model, kita perlu menetapkan parameter pemadaman lembut, supaya apabila kita melakukan operasi pemadaman, Parameter ini akan dikemas kini secara automatik. Contohnya:
namespace app\common\model; use think\Model; use traits\model\SoftDelete; class User extends Model { use SoftDelete; protected $deleteTime = 'delete_time'; // 表示删除时间的字段名称 protected $defaultSoftDelete = 0; // 表示未删除状态的值 }
Antaranya, pembolehubah $deleteTime mewakili nama medan masa pemadaman dan pembolehubah $defaultSoftDelete mewakili nilai status yang tidak dipadamkan. Jika parameter ini tidak ditetapkan, ia lalai kepada 0.
Di mana pemadaman lembut diperlukan, kami boleh menggunakan kaedah padam yang disediakan oleh kelas model untuk melaksanakan operasi pemadaman. Contohnya:
$user = User::get($id); // 根据id获取用户实体 $user->delete(); // 执行软删除
Selepas operasi padam lembut dilaksanakan, medan delete_time akan dikemas kini kepada cap masa semasa, menunjukkan bahawa data telah dipadamkan.
Jika anda perlu menanyakan data yang dipadam lembut, kami boleh menggunakan kaedah withTrashed untuk membuat pertanyaan. Contohnya:
// 查询所有的用户数据(包含已经软删除的数据) $userList = User::withTrashed()->select(); foreach ($userList as $user) { if ($user->delete_time) { // 判断是否已经被软删除 // 如果已经被软删除,则进行相应的处理 } else { // 如果未被软删除,则进行相应的处理 } }
Melalui kaedah withTrashed, kami boleh mendapatkan semua data pengguna, termasuk data yang belum dipadam lembut dan data yang telah dipadam lembut.
Jika anda perlu memulihkan data yang dipadam lembut, kami boleh menggunakan kaedah pemulihan yang disediakan oleh kelas model untuk melaksanakan operasi pemulihan. Contohnya:
$user = User::onlyTrashed()->where('id', $id)->find(); // 根据id获取已经被软删除的用户实体 $user->restore(); // 执行数据恢复
Selepas operasi pemulihan data yang dipadam lembut dilaksanakan, nilai medan delete_time yang sepadan akan dikosongkan, menunjukkan bahawa data telah dipulihkan.
2. Ringkasan
Melalui operasi pemadaman lembut, kami boleh memadamkan data sambil mengekalkan integriti data dan memulihkan data yang dipadamkan apabila perlu. Dalam rangka kerja ThinkPHP, pelaksanaan pemadaman lembut adalah sangat mudah Anda hanya perlu menambah medan yang sepadan dalam pangkalan data dan menetapkan parameter pemadaman lembut kelas model Anda boleh menikmati kemudahan fungsi pemadaman lembut, meningkatkan kecekapan pembangunan , dan menjimatkan masa pembangunan.
Atas ialah kandungan terperinci Kaedah pelaksanaan pemadaman lembut dalam rangka kerja ThinkPHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!