
Question:
Let me start with a simple example to show how my data is structured. There are four tables, Employee
, Store
, Department
, and Employee_Department_Permissions
.
Departments belong to Stores (for example, the Department table might contain a record for the dairy department of store 5). Employees are given the right to work in Departments through the Employee_Department_Permissions table, which contains the Employee id and Department id.
Let's say an employee can log in to my application and view a list of every store in the database. Next to each store, I want to print out how many departments they can work in at each store. I have an Employee model with a mapper that provides the fetchAll
method to accomplish the first part.
But, where should I find out how many departments an employee can work in? In my model wrapper, I can call findDependentRows
to do this. Or, I could do it in my controller with raw Zend_Db_Select
calls. A third option I was considering would to be just add a column to the Employee table that holds this information, but then I'd need to update a second table when Employee_Department_Permission is modified.
Thank you in advance for any advice.
Answer1:As a very general rule of thumb, I would suggest you try keep the controller as free as possible from fetching information for the views. This is a task best handled in the model.
Sure it's easy to just fetch from controller, I mean, since we are there processing a request, it would be so simple to just do a quick fetch and push that off to the view. <em>This is where dicipline comes into play</em>. As your application grows you will appreciate having the clean separation this methodology offers you <em>if applied</em>.
My 2 cents, happy coding to you friend.