Функція м'якого видалення в 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 спрощує операції постійного видалення, роблячи ваш код більш чистим і ефективним при управлінні записами з м'яким видаленням
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!