On Jan 6, 9:28 pm, Alex Ciobanu <ics.cake...@gmail.com> wrote: > On 1/6/2011 9:26 PM, Nicolas400 wrote: > > > Hi, I want a function that return me a Random Article from my Model. > > > I guess all I need is the Find Method, but how do I know how this > > random number will match an existing ID ?? > > > I'm really stuck. > > > because if I had 3 articles (1,2,3) i want to get a random Id within > > those numbers, but if I have 100000 articles is diferent.!! > > Why don't you try something like: > > $this->Model->find('first', array('order' => 'RAND()'));
ORDER BY RAND() isn't really appropriate unless you've got a trivial amount of data. A much less db intensive approach would be something like this: max = select max(field) from table select * from table WHERE field >= ${rand(1, max)} ORDER BY field ASC LIMIT 1 OR select * from table ORDER BY (field >= ${rand(1, max)}) DESC, field ASC LIMIT 1 If you're use case is more demanding/complex than that here's a behavior which does the above using a field named "random" and even allows you to paginate 'random' data: https://github.com/AD7six/mi/blob/master/models/behaviors/random.php AD Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en