Have you ever wondering how to find MAX, MIN or AVG of a database table column in CakePHP way? Well I haven’t since yesterday. The solution is quite simple and obvious.
Lets say you want to show the average views per post (in the example we have the views field in every post).
The SQL should be something like this:
SELECT AVG(views) FROM posts
Instead of using query() function you can use the CakePHP way:
$this->Post->find('first', array('fields'=>array('AVG(views) as avg_views')));
Hope this will help someone.
Today I would like to show you how I am storing and fetching the settings for my applications in CakePHP. The reason why I am doing this is pretty obvious – once the application is complete and installed it’s better to have settings such as
- How many rows per page to show in the paginated table
- Where is the upload dir for the files
- What is the Date format used in the application
And many other.
These days when I showed my example to some friends I realized that in fact even the second example had potential bugs. In fact not a bug, but missing functionality which could mislead the user while using the component.
What I found: When the user prefer to type instead of selecting the value from the list, then it’s possible to have “nothing selected” in ID field, but in fact the user have feeling that he select the correct value. This is extremely valid when the options are short and typing 3-4 chars which in fact is more convenient to type instead of selecting.
I am using Scriptaculous for Autocomplete control, but in the example provided there is no way to select strict value.
Let me explain what I mean: Go to autocomplete example and try to select an entry in first group of fields. Well everything looking fine.
Then try to modify the entry, for example remove the last char from the field. and press somewhere on the web page /with the mouse/. Well as you can see this didn’t clear the value from ID field and in the real example, when the ID field is hidden, users could have wrong impression that the field is selected, they change it, but their change is not applied … and the complication occur.