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
-~----------~----~----~----~------~----~------~--~---

Reply via email to