Get a random row from a database query in Kohana 3
Asked Answered
I

2

8

I'm using the ORM module in Kohana 3 and instead of displaying the first row of a database result set, what query should I use in my code when I want to get a random row from a certain table?

Indeed answered 24/12, 2009 at 3:50 Comment(0)
D
15

You can use this (if using MySQL):

ORM::factory('some_model')->order_by(DB::expr('RAND()'))->find();
Deroo answered 24/12, 2009 at 13:20 Comment(0)
D
8

You can issue the query directly, if you are using MySQL:

SELECT * FROM table LIMIT 1 ORDER BY RAND();

Or with Kohona Query Builder:

$this->db->from('table')->select('*')->limit(1)->orderby(null, 'RAND()')->get();
Dellinger answered 24/12, 2009 at 4:31 Comment(4)
If it is a much-used query I would even consider making it a proc since it requires no input.Powe
Oops, forgot to say that I'm using ORM. How do we do that using ORM? :)Indeed
@Xeoncross: Yeah, that may be a good idea. @ed: AFAIK you don't, ORMs aren't meant for that kind of stuff.Dellinger
your solution works, but only because second parametr in order_by instruction is not escaped or SQL-injection protected in other way (should be!). So "right" way to do this is thru Db:exprKlee

© 2022 - 2024 — McMap. All rights reserved.