• Время чтения ~1 мин
  • 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 experience in website development and desktop development. I have experience with various tools and technologies such as Bootstrap, Tailwind, HTML5, CSS3, PUG, JS, AlpineJs, jQuery, PHP, MODX, Laravel, NodeJS, Git, Docker, hQuery, Guzzle, Livewire, Blade, Twig, Fenom, and Smarty. I have experience in website development using Symfony, MODX and Laravel. Experie...

More
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297