• Время чтения ~0 мин
  • 20.01.2023

Ларавель Удаленные модели package by Spatie автоматически копирует удаленные модели в отдельную таблицу:

— Фрик Ван дер Хертен 🔭 (@freekmurze) 16 января 2023 г.

По мнению Фрика записать о пакете, вы можете думать об этом пакете как о «корзине для моделей». Пакет достигает этого через таблицу базы данных, называемую удаленные_модели и добавление KeepsDeletedModels особенность ваших моделей, что вы хотите сохранять резервные копии удаленных моделей:

use Illuminate\Database\Eloquent\Model;
use Spatie\DeletedModels\Models\Concerns\KeepsDeletedModels;

class BlogPost extends Model
{
    use KeepsDeletedModels;
}

Этот пакет также может попытаться восстановить удаленные модели, используя несколько различных методов:

// $blogPost will be restored and returned
$blogPost = BlogPost::restore(5);

// $blogPost will be returned, but it is not saved in the DB yet
$blogPost = Blogpost::makeRestored($id);

BlogPost::restoreQuietly(5);

Вы также можете подключиться к процессу восстановления с помощью замыкания, если хотите изменить модель в процессе восстановления. Этот пакет имеет другие параметры конфигурации и соображения, такие как сокращение таблицы удаленных моделей по расписанию и частота удаления этой таблицы.

Вы можете задаться вопросом, почему вы должны использовать этот пакет, а не встроенную функцию обратимого удаления в ядре Laravel. Рецензия Фрика Ван дер Хертена отлично справляется со сравнением компромиссов обоих подходов.

Таким образом, вот некоторые плюсы и минусы мягкого удаления:

  • ➕ Мягкое удаление очень удобно
  • ➕ Не требуется копирование данных при «удалении» модели
  • ➕ Удаленные записи выигрывают от любых будущих изменений в схеме таблицы.
  • ➕ Вы должны помнить об обратимом удалении при запросе к базе данных (т. е. область, в которой delete_at = ноль)
  • ➖ Ссылочная целостность при обратимом удалении ассоциаций моделей, это необходимо делать вручную
  • ➖ Восстановить удаление может быть сложно при восстановлении модели (и связанных моделей)

И, по словам Фрика, вот некоторые плюсы и минусы использования отдельной таблицы удаленных моделей:

  • ➕ Нет необходимости корректировать запросы для учета delete_at = ноль
  • ➕ База данных может защитить ссылочную целостность — удаление записи также приведет к удалению всех связанных записей.
  • ➕ Легко безвозвратно удалить старые данные
  • ➖ Сложнее восстановить удаленные данные, так как вы должны скопировать их обратно (в отличие от установки delete_at = ноль для восстановления модели простым программным удалением)

Вы можете узнать больше об этом пакете, получить полные инструкции по установке и просмотреть исходный код на Гитхабе.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297