I know this would be a lot easier for working with Cake, but the purist in me says it's just the wrong way to store the data. With raw SQL it's a no-brainer on how to make it work. I'm willing to wait for Cake to catch up to easily allow more complicated JOIN queries/conditions/order clauses, and the workaround in the meantime isn't that terrible... ;o)
Chrs, Dav On 4 Sep 2008, at 19:35, Adam Royle wrote: > > I would add a "average_rating" field in your "places" tables, then > whenever you receive a rating, update the Places table... > > Here is some example code that I wrote for this site: http://bigfish.tv/fest/ > > class Rating extends AppModel { > > var $belongsTo = array( > 'Film' => array('className' => 'Film', 'foreignKey' => > 'film_id') > ); > > > // recalculate the average rating for the film > function afterSave($created) { > > $rating_average = $this->field('AVG(rating)', array('film_id' => > $this->data['Rating']['film_id'])); > $this->Film->saveField(array('id' => $this->data['Rating'] > ['film_id'], 'rating_average' => $rating_average)); > > } > > } > > > On Sep 4, 5:57 pm, David Christopher Zentgraf <[EMAIL PROTECTED]> > wrote: >> Hi, >> >> I was wondering if anybody has thought about adding support for >> "manual sorting" to Cake. >> In my specific case, I need to paginate a model and want to order it >> by the average score of ratings that are stored in another table >> (Place hasMany Rating; ORDER BY AVG(Rating.score)). The best solution >> I found so far, next to writing my own paginator, was to add a >> condition like this to the paginate conditions: >> >> 1 = 1 ORDER BY FIELD(`Place`.`id`, 128, 97, ... ) DESC >> >> where I'm getting the list of ids in a separate query in the right >> order. >> This works fine, but since I don't like the "1 = 1 hack" I was >> wondering if there's a chance to get something like this into Cake: >> >> find('all', array('order' => array('Place.id' => array(1, 2, >> 3, ... )))); >> >> which would produce the above ORDER BY clause. I think that might >> come >> in handy in other situations as well. >> >> Chrs, >> Dav > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
