Heim > Backend-Entwicklung > PHP-Tutorial > Permanente Rekorddeletion mit Laravels erzwungener

Permanente Rekorddeletion mit Laravels erzwungener

百草
Freigeben: 2025-03-05 16:40:11
Original
288 Leute haben es durchsucht

Permanent Record Deletion with Laravel's forceDestroy

Die Soft -Deletion -Funktion von

Laravel behält die Datenintegrität bei, indem gelöschte Datensätze in der Datenbank aufbewahrt werden. Manchmal müssen Sie diese Datensätze jedoch dauerhaft löschen. Die neue forceDestroy -Methode vereinfacht diesen Prozess, ohne das Modell abzurufen, bevor es dauerhaft gelöscht wird.

Diese Methode ist besonders nützlich bei der Durchführung von Reinigungsvorgängen, der Verwaltung von Benutzerdaten, um die Einhaltung der Datenschutz zu entsprechen, oder um ein Prüfungssystem zu implementieren, das die vollständige Entfernung bestimmter Datensätze aus der Datenbank erfordert.

Folgendes ist ein Beispiel für die Verwendung der forceDestroy -Methode:

use App\Models\Post;

// 永久删除单个记录
Post::forceDestroy($id);

// 删除多条记录
Post::forceDestroy([$id1, $id2, $id3]);
Nach dem Login kopieren

Schauen wir uns ein praktisches Beispiel eines Datenreinigungsdienstes an:

<?php namespace App\Services;

use App\Models\User;
use App\Models\Content;
use Illuminate\Support\Facades\Log;
use App\Events\UserDataPurged;

class DataCleanupService
{
    public function purgeInactiveUserData(int $monthsInactive = 12)
    {
        $inactiveUsers = User::onlyTrashed()
            ->where('deleted_at', '<', now()->subMonths($monthsInactive))
            ->pluck('id');

        if ($inactiveUsers->isEmpty()) {
            return ['message' => '没有需要清理的非活动用户'];
        }

        // 首先清理相关内容
        $contentCount = Content::onlyTrashed()
            ->whereIn('user_id', $inactiveUsers)
            ->count();

        Content::whereIn('user_id', $inactiveUsers)
            ->forceDestroy();

        // 永久删除用户帐户
        $userCount = User::forceDestroy($inactiveUsers);
        Log::info('完成用户数据清理', [
            '已删除用户数量' => $userCount,
            '已删除内容数量' => $contentCount
        ]);
        UserDataPurged::dispatch($inactiveUsers);

        return [
            '已清理用户数量' => $userCount,
            '已清理内容数量' => $contentCount,
            'message' => "已成功清理 {$userCount} 个非活动用户帐户"
        ];
    }
}
Nach dem Login kopieren
Die Methode

forceDestroy vereinfacht dauerhafte Löschvorgänge und macht Ihren Code prägnanter und effizienter, wenn Soft Delete -Datensätze verwaltet werden.

Das obige ist der detaillierte Inhalt vonPermanente Rekorddeletion mit Laravels erzwungener. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage