[FuelPHP] クエリビルダを使ってランダム(RAND())に取得する

RAND()を使うときに少し引っ掛かったのでメモ。

#方法

#MYSQL の場合

SELECT文でRAND()を使うときは以下のような文を書く。

SELECT
  col_name 
FROM
  table_name 
ORDER BY RAND() 
LIMIT 4;

#FuelPHP のクエリビルダの場合

DB::select('col_name')
    ->from('table_name')
    ->limit(4)
    ->order_by( DB::expr('RAND()') )
    ->execute();

ORDER BY句にRAND()を指定するのだが、関数を使うことになるので単純な「ソート条件(‘id’, ‘desc’)」を与えてもダメ。
DB::expr()を使う必要がある。