Mazání

Mazání entit

Definovanou entitu už máme vytvořenou a uloženou. A co když jí naopak budeme potřebovat odstranit? Je to taktéž snadné:

$article Content_Article::load$some_id );
$article->delete();

Jedná se o stejný princip jako při ukládání. Tedy i mazání se postará o subentity hlavní entity, nebo o subentity subentity.

Je možné mazat pouze subentitu (například určitou jazykovou mutaci článku a podobně).

Opět je dobré mít na paměti události - po smazání může být nutné například odstranit (nebo přesunout) soubory co měly s entitou kontext a podobně. Opět by měl být dodržen princip zapouzdření a metoda delete() by měla zařídit vše potřebné.

Stejně jako ukládání i proces mazání je SQL transakce (pokud to backend umí), do které je zahrnuto mazání všech případných subenetit. K nastartování transakce dochází automaticky, k ukončení také a k tzv. rollback při případném selhání rovněž.

Selhání mazání vyhazuje výjimku.

Mazání dílčích záznamů z databáze

V některých situacích může být nutné jednoduše mazat data přímo z databáze. To umožňuje statická metoda dataDelete. Její použití je jednoduché, stačí vytvořit dotaz:

SomeClass::dataDelete( [
    
'master_entity_id' => $this->id,
    
'AND',
    
'author_user_id' => $user_id
] );

Pozor! Opravdu se jedná o pouhé přímé smazání dat z databázové tabulky. Tedy v tomto případě systém neřeší souvislosti mezi entitami, události a ani spouštění a ukončování transakcí.

Předchozí kapitola
Ukládání
Další kapitola
Tvorba dotazů