Doctrine 2 ORM – draft několika souvisejících entit
- dibalaj
- Člen | 40
Ahoj,
řeším následující problém – mám několik entit, které spolu mají různé asociace. V databázi je to několik spolu souvisejících tabulek. K těmto záznamům budou přistupovat dva druhy uživatelů – úplný správce a speciální uživatel.
Potřebuji, aby správce mohl upravovat přímo konkrétní záznamy v DB. To je jednoduché. Problém ale je, že potřebuji, aby speciální uživatel dělal úpravy v těchto záznamech někde vedle, aby se změny neprojevily na frontendu. Tyto změny bude muset schválit správce.
Jak byste podobný problém řešili vy? Mě napadlo, mít oddělenou strukturu těch souvisejících tabulek a při zahájení editace by se všechna data, která s tím jedním hlavním záznamem souvisí, překopírovala do nějakých „draft“ tabulek a spec. uživatel by pak dělal úpravy na těchto datech. Jenže mi přijde hloupé dělat několik duplicitních entit, které by pracovaly s tou draft tabulkou.
Jako další řešení mě napadlo udělat nějakou souborovou cache, která by se invalidovala při schválení změn – úpravy by tak probíhaly na „produkčních“ záznamech.
Předem díky za jakékoliv nápady.
- dibalaj
- Člen | 40
Díky za odpovědi. Nejde ale o jednoduché úpravy typu „přepsání několika sloupců“, ale spíše o komplexní úpravy – mazání/přidávání souvisejících záznamů, nahrávání obrázků k souvisejícím záznamům, apod. Nenapadá mě pak způsob, jak to v backendu pěkně zobrazit, aby spec. uživatel i admin viděli „draft“ stejně jako produkční záznam.
Pro jistotu uvedu reálný příklad:
- existují záznamy „obchodů“
- na tyto obchody jsou navázané produkty, které obchod nabízí
- každý produkt má svoji kategorii a nějaké tagy
- každý produkt má nějakou fotku
Potřebuji tedy, aby admin upravoval přímo „produkční“ záznamy – tedy aby se změny projevily ihned. Speciální uživatel bude vlastně majitel obchodu, který bude mít do administrace také přístup – ale jen omezený – tedy uvidí jen správu svého obchodu. Bude moct přidávat/mazat produkty svého obchodu, upravovat údaje obchodu (jako třeba otevírací dobu), přidávat nové kategorie produktů a přidávat nové tagy. Admin by poté v administraci konkrétního obchodu měl vidět něco jako „existují úpravy od majitele obchodu“ a po rozkliknutí by měl vidět „novou verzi“ obchodu, kterou pak schválí/zamítne.
Nevím, jestli by se dal způsob, co jste doporučili, rozumně a snadno použít. Nenapadá vás pro tento konkrétní příklad ještě jiné řešení? :-)
- cubic
- Člen | 45
V tom, co píšeš, nevidím problém, ani v mazání a přidávání.
Obrázky si uložíš pod unikátním názvem na disk a je jen na tobě, kdy je
uložíš do hlavní tabulky a začneš je zobrazovat zákazníkům.
Ještě ty změny můžeš slučovat do nějakých logických celků (= např.
řádek v cílové tabulce), aby to bylo přehlednější při schvalování.
A nebo si vytvořit pro každou tabulku zvláštní frontu, ale to mi přijde
zbytečně komplikované.
Editoval cubic (15. 11. 2015 20:49)