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í.