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?
Get a random row from a database query in Kohana 3
You can use this (if using MySQL):
ORM::factory('some_model')->order_by(DB::expr('RAND()'))->find();
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();
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:expr –
Klee
© 2022 - 2024 — McMap. All rights reserved.