Perhaps the most efficient way of doing this is by storing the total
in your Posts model, which might even remove the need of a Votes
model. I'm presuming that when you say Votes have a percentage you
mean that each Votes score is on a range from 0 to 100.

If you add the columns "average_vote" (float) and "total_votes" (int)
to your Posts table then you can recalculate the average every vote
with the following equation:
new average = ((average vote * total votes) + new vote) / (total votes
+ 1)
and of course increment the total_votes column.

So the pseudocode for Post::addVote(score) is
    if post exists
        find average_vote and total_votes
        set average_vote to ((average_vote * total_votes) + score) /
(total_votes + 1)
        set total_votes to total_votes + 1


On Nov 4, 8:31 am, djo26 <[email protected]> wrote:
> Hi everyone, I have Posts that have Votes, and the Vote has a
> percentage.  Every time a new Vote is added I want to calculate the
> average percentage of all Votes of that particular Post and update the
> Post average percentage. Besides a custom query I have no idea how to
> do this in my model. Anyone else on here know?  I'm relatively new to
> this so it might be simple, but I'm not sure how to do it right now.
>
> Any help is appreciated.
> thanks, dan
--~--~---------~--~----~------------~-------~--~----~
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