The Model-View-Controller Pattern (MVC) is not the only game in town. In fact it is awkward and cumbersome in some cases.
MVC is a Design Pattern, and Design Patterns show us how to solve common problems with common solutions. However we should not just use them directly all the time – but rather learn from them and use them as reference points for solving problems.
The most worthwhile component of MVC is the Model, (or Data Layer). It makes good sense to isolate it and encapsulate it. It make for very robust and reusable code. All your SQL related calls should be in one place.
Code above the Data Layer can express itself in more business friendly terms, ie. book = Book(‘Moby Dick’), and not ‘select * from books where title like ‘%moby dick%’, and status_id = 1;’
In MVC the View and the Controller components are isolated and encapsulated. I disagree — This can makes simple tasks harder. Views and Controller functionality should be able to commingle. This is were a lot of the interesting and sophisticated coding happens.