Tranzakciók Laravel módra

Tranzakciók Laravel módra

Számtalanszor előfordulhat, hogy bizonyos adatbázis műveleteket egyben szeretnénk intézni és biztosak akarunk lenni abban, hogy vagy lefut az összes vagy egyik sem.

Létre szeretnénk hozni egy felhasználót és hozzá szeretnénk rendelni pár kategóriát. Biztosak szeretnénk lenni abban, hogy  mindkét művelet “egyben” végrehajtódik, egy esetleges hiba esetén viszont egyik sem.

Tehát olyan hibába semmiképpen sem szeretnénk esni, hogy a felhasználó létrejön, de nem rendelődik hozzá egyetlen kategória sem.

A megoldás a DB Facade. A beginTransaction() és a commit() metódusok között lévő adatbázis műveleteket tekintjük atominak, tehát vagy lefutnak sikeresen egyben vagy a rollback() metódusnak köszönhetően gyakorlatilag nem történik semmilyen adatbázis művelet.

A példa természetesen csak prezentálási célokat szolgál, de mondjuk, ha az lenne a cél, hogy a felhasználó kreditpontjait csökkentjük majd ezután adunk neki jogosultságot egy általa kiválasztott tartalomhoz (pl videóhoz), akkor az egy jó példa lehet, hogy biztosak szeretnénk lenni abban, hogy ha levonjuk a pontjait, akkor a kiválaszott videót meg is kapja a felhasználó.

Kapcsolódó címkék:
Megosztás:

További 'Laravel' cikkek

Collection Pagination Resource

Collection Pagination Resource

Azt tudjuk, hogy a paginate() metódussal egyszerűen meg lehet oldani a lapozást. De mi a helyzet akkor, ha 
egy collection-t szeretnék 
lapozhatóvá tenni?