Nextras ORM – zacyklení eventů
- dms
- Člen | 94
Ahoj, řeším celkem banální problém. Při jakékoli změně (přidání, update, odebrání) položky z objednávky potřebuji aby se u objednávky automaticky přepočetl celkový počet položek. Chtěl bych to řešit automaticky přes eventy tedy do onAfterPersist() a onAfterRemove() jsem přidal přepočet celkového kusů položek objednávky a objednávku persistnu. Problém je že při persistu objednávky se zavolá zase persist položek a ten zavolá zase persist objednávky a tak dál dokola… Nevím jestli na to jdu úplně špatně nebo jsem něco přehlédl. Každopádně to lze vyřešit celkem jednoduše že objednávku nepersistnu aby nedošlo k zacyklení ale místo toho přes connection updatnu ručně sloupec total_items_quantity u objednávky nebo druhou možností je že vypnu cascadu persitu u itemů objednávky. Obě tyhle varianty fungují ale ani jedna se mi úplně nelíbí. Nějaký nápad jak to lépe vyřešit?
- Marek Bartoš
- Nette Blogger | 1274
Však to můžeš dát do onBefore* eventů, aby se data uložila současně. A myslím že v tomhle případě chceš onBeforeInsert a onBeforeDelete. onBeforePersist se zavolá i v případě update
Editoval Marek Bartoš (15. 2. 2022 19:36)