To secure your database from inconsistencies resulting from failing (complex) operations, you (should) use transactions.
However, complex methods often rely on other complex methods that themselves build on transactions.
This HowTo presents a method to nest or embed transactions without relying on the database's nesting capabilities.
One of the common requests I see in the forum is how to implement RBAC. While you can implement Yii 2's built-in RBAC, that might be too much for developers who are just starting with Yii 2 or have simpler needs. Sometimes you are looking for a fast solution and just want two flavors, user and admin. And even if you will eventually need more, you can use these methods as a starting point for developing your own features or move on to Yii 2's RBAC.
I have two tables called hospitals and departments. I have a junction table between them which holds the departments in each hospital. But sometimes I need a list of "All hospitals with All possible departments" - regardless of whether they are linked in the junction table or not.