Безповоротне видалення записів з використанням forceDestroy у Laravel

Перекладено ШІ 0 Laravel News 21 січня, 2025

Вам коли-небудь потрібно було назавжди видалити записи з вашої бази даних у Laravel? Ознайомтеся з новим методом forceDestroy, який спрощує цю задачу, дозволяючи зберігати порядок у вашому коді та легко управляти м'яко видаленими даними

Функція м'якого видалення в Laravel допомагає зберігати цілісність даних, залишаючи видалені записи в базі даних. Проте, іноді потрібно назавжди видалити ці записи. Новий метод forceDestroy спрощує цю процедуру, усуваючи необхідність спочатку отримувати модель перед постійним видаленням.

Цей метод особливо корисний під час виконання операцій очищення, управлінні даними користувачів для дотримання конфіденційності або впровадження систем модерації, де певні записи потрібно повністю видалити з бази даних.

use App\Models\Post;
// Видалення одного запису назавжди
Post::forceDestroy($id);
// Видалення кількох записів
Post::forceDestroy([$id1, $id2, $id3]);

Розгляньмо практичний приклад служби очищення даних:

<?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('Завершено видалення даних користувачів', [
            'users_removed' => $userCount,
            'content_removed' => $contentCount
        ]);
        UserDataPurged::dispatch($inactiveUsers);
 
        return [
            'users_purged' => $userCount,
            'content_purged' => $contentCount,
            'message' => "Успішно видалено {$userCount} неактивних акаунтів користувачів"
        ];
    }
}

Метод forceDestroy спрощує операції постійного видалення, роблячи ваш код більш чистим і ефективним при управлінні записами з м'яким видаленням

Популярні

Інше, що варто прочитати

26 Оновлено 01 червня, 2026

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

41 Оновлено 01 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

12 Оновлено 01 червня, 2026

Удосконалюйте свої проєкти Laravel за допомогою справжнього штучного інтелекту для кодування з Laravel Boost!

Готові підняти свій робочий процес у Laravel на новий рівень? У цій статті я розгляну Laravel Boost, інноваційний AI-допомічник для програмування, який зробить вашу розробку швидшою та продуктивнішою