• Czas czytania ~ :czas min
  • 20.01.2023

Laravel Usunięte modele package firmy Spatie automatycznie kopiuje usunięte modele do osobnej tabeli:

— Freek Van der Herten 🔭 (@freekmurze) 16 stycznia 2023 r

Według Freeka pisać o pakiecie, możesz myśleć o tym pakiecie jako o „koszu na modele. Pakiet osiąga to poprzez tabelę bazy danych o nazwie usunięte_modele i dodanie A Przechowuje usunięte modele do swoich modeli, że chcesz zapisywać kopie zapasowe usuniętych modeli:

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

class BlogPost extends Model
{
    use KeepsDeletedModels;
}

Ten pakiet może również próbować przywrócić usunięte modele przy użyciu kilku różnych metod:

// $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);

Możesz także wejść w proces przywracania za pomocą Zamknięcia, jeśli chcesz zmodyfikować model podczas procesu przywracania. Ten pakiet ma inne opcje konfiguracji i uwagi, takie jak oczyszczanie tabeli usuniętych modeli zgodnie z harmonogramem i częstotliwość czyszczenia tej tabeli.

Możesz się zastanawiać, dlaczego miałbyś używać tego pakietu zamiast wbudowanej funkcji miękkiego usuwania w rdzeniu Laravel. Wpis Freeka Van der Hertena wykonuje doskonałą robotę, porównując kompromisy obu podejść.

Podsumowując, oto kilka zalet i wad usuwania nietrwałego:

  • ➕ Miękkie usuwanie jest bardzo wygodne
  • ➕ Brak konieczności kopiowania danych podczas „usuwania” modelu
  • ➕ Usunięte rekordy korzystają z wszelkich przyszłych zmian w schemacie tabeli
  • ➕ Podczas wysyłania zapytań do bazy danych należy pamiętać o usuwaniu miękkim (tj usunięto_at=null)
  • ➖ Integralność referencyjna podczas miękkiego usuwania powiązań modeli, należy to zrobić ręcznie
  • ➖ Cofnięcie usunięcia może być skomplikowane podczas przywracania modelu (i powiązanych modeli)

Według Freeka, oto kilka zalet i wad korzystania z oddzielnej tabeli usuniętych modeli:

  • ➕ Nie ma potrzeby dostosowywania zapytań w celu uwzględnienia usunięto_at=null
  • ➕ Baza danych może chronić integralność referencyjną — usunięcie rekordu spowoduje również usunięcie wszystkich powiązanych rekordów
  • ➕ Łatwe trwałe usuwanie starych danych
  • ➖ Trudniejsze przywrócenie usuniętych danych, ponieważ trzeba je skopiować z powrotem (w porównaniu z ustawieniem usunięto_at=null aby przywrócić model za pomocą prostych miękkich usunięć)

Możesz dowiedzieć się więcej o tym pakiecie, uzyskać pełne instrukcje instalacji i wyświetlić plik kod źródłowy na GitHubie.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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
Kontakt
Ukraine, Lutsk
+380979856297