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]);
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} 个非活动用户帐户" ]; } }
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!