Bei der Entwicklung von Webanwendungen müssen wir normalerweise Daten hinzufügen, löschen, ändern und überprüfen, und das Löschen von Daten ist einer der sehr wichtigen Vorgänge. In tatsächlichen Projekten müssen wir jedoch häufig gelöschte Daten wiederherstellen, sodass herkömmliche physische Löschvorgänge unpraktisch sind.
Als Reaktion auf dieses Problem bietet das ThinkPHP-Framework eine Soft-Deletion-Funktion, die den Löschvorgang in einen markierten Löschvorgang umwandelt. Auf diese Weise verschwinden die gelöschten Daten nicht wirklich aus der Datenbank, sondern fügen einen Löschstatus hinzu Die Datentabelle wird bei Bedarf wiederhergestellt.
Als nächstes werfen wir einen Blick auf die Implementierung von Soft Deletion im ThinkPHP-Framework.
1. So implementieren Sie das vorläufige Löschen
Fügen Sie ein Feld hinzu, das den Löschstatus in der Tabelle angibt, die vorläufig gelöscht werden muss, zum Beispiel:
ALTER TABLE `table_name` ADD `delete_time` BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '删除时间';
Unter ihnen , das Feld „delete_time“ Wird zum Aufzeichnen des Zeitpunkts des Löschvorgangs verwendet. Wenn dieses Feld nicht leer ist, bedeutet dies, dass die Daten gelöscht wurden.
In der Modelldatei müssen wir die Parameter für das weiche Löschen festlegen, damit die Parameter beim Ausführen eines Löschvorgangs automatisch aktualisiert werden. Beispiel:
namespace app\common\model; use think\Model; use traits\model\SoftDelete; class User extends Model { use SoftDelete; protected $deleteTime = 'delete_time'; // 表示删除时间的字段名称 protected $defaultSoftDelete = 0; // 表示未删除状态的值 }
Unter diesen repräsentiert die Variable $deleteTime den Feldnamen der Löschzeit und die Variable $defaultSoftDelete den Wert des nicht gelöschten Status. Wenn dieser Parameter nicht festgelegt ist, ist er standardmäßig auf 0 gesetzt.
Wo ein vorläufiges Löschen erforderlich ist, können wir die von der Modellklasse bereitgestellte Löschmethode verwenden, um den Löschvorgang durchzuführen. Beispiel:
$user = User::get($id); // 根据id获取用户实体 $user->delete(); // 执行软删除
Nachdem der Soft-Delete-Vorgang ausgeführt wurde, wird das Feld delete_time auf den aktuellen Zeitstempel aktualisiert, um anzuzeigen, dass die Daten gelöscht wurden.
Wenn Sie vorläufig gelöschte Daten abfragen müssen, können wir zum Abfragen die Methode withTrashed verwenden. Zum Beispiel:
// 查询所有的用户数据(包含已经软删除的数据) $userList = User::withTrashed()->select(); foreach ($userList as $user) { if ($user->delete_time) { // 判断是否已经被软删除 // 如果已经被软删除,则进行相应的处理 } else { // 如果未被软删除,则进行相应的处理 } }
Über die withTrashed-Methode können wir alle Benutzerdaten abrufen, einschließlich Daten, die nicht vorläufig gelöscht wurden, und Daten, die vorläufig gelöscht wurden.
Wenn Sie vorläufig gelöschte Daten wiederherstellen müssen, können wir die von der Modellklasse bereitgestellte Wiederherstellungsmethode verwenden, um den Wiederherstellungsvorgang durchzuführen. Beispiel:
$user = User::onlyTrashed()->where('id', $id)->find(); // 根据id获取已经被软删除的用户实体 $user->restore(); // 执行数据恢复
Nachdem der Vorgang zur vorläufig gelöschten Datenwiederherstellung ausgeführt wurde, wird der Wert des entsprechenden Felds „delete_time“ gelöscht, was darauf hinweist, dass die Daten wiederhergestellt wurden.
2. Zusammenfassung
Durch den Soft-Delete-Vorgang können wir die Daten unter Beibehaltung der Datenintegrität löschen und die gelöschten Daten bei Bedarf wiederherstellen. Im ThinkPHP-Framework ist die Implementierung des Soft-Deletion sehr einfach. Sie müssen lediglich die entsprechenden Felder in der Datenbank hinzufügen und die Soft-Deletion-Parameter der Modellklasse festlegen. Sie können den Komfort der Soft-Deletion-Funktion nutzen und die Entwicklungseffizienz verbessern und sparen Sie Entwicklungszeit.
Das obige ist der detaillierte Inhalt vonImplementierungsmethode des weichen Löschens im ThinkPHP-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!