I've always tried to keep models for direct database interaction only, and keep all the actual logic in the controllers. Usually, a framework or platform provides more flexibility to models and limits the freedom of controllers.
- Models are usually able to be called from multiple controllers.
- Models are usually able to be called from other models.
- In the case of Magento, CRONs can't be called on controllers.
It sometimes seems like frameworks want controllers to be an advanced router. I sometimes end up putting non database logic in Models, or using concepts like Helpers or a concept specific to the framework, neither of which I don't enjoy doing.
What is the advantage of not giving controllers the same freedom that models typically get? Should I be looking at MVC differently than I am?