Maison > développement back-end > tutoriel php > Suppression du dossier permanent avec Laravel & # 039; s forcedestroy

Suppression du dossier permanent avec Laravel & # 039; s forcedestroy

百草
Libérer: 2025-03-05 16:40:11
original
291 Les gens l'ont consulté

Permanent Record Deletion with Laravel's forceDestroy

La fonction de suppression douce de Laravel maintient l'intégrité des données en conservant des enregistrements supprimés dans la base de données. Cependant, vous devez parfois supprimer définitivement ces dossiers. La nouvelle méthode forceDestroy simplifie ce processus sans avoir à récupérer le modèle avant de le supprimer définitivement.

Cette méthode est particulièrement utile lors de l'exécution des opérations de nettoyage, de la gestion des données des utilisateurs pour se conformer à la conformité de la confidentialité ou en implémentant un système d'audit qui nécessite la suppression complète de certains enregistrements de la base de données.

Ce qui suit est un exemple de la façon d'utiliser la méthode forceDestroy:

use App\Models\Post;

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

// 删除多条记录
Post::forceDestroy([$id1, $id2, $id3]);
Copier après la connexion

Regardons un exemple pratique d'un service de nettoyage des données:

<?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} 个非活动用户帐户"
        ];
    }
}
Copier après la connexion
La méthode

forceDestroy simplifie les opérations de suppression permanentes, ce qui rend votre code plus concis et efficace lors de la gestion des enregistrements de suppression Soft.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal