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

1 min read

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()を使う必要がある。