値の一部分だけをソートしたい
ある項目の一部分だけソートをかけたい場合は以下のように
ある項目の値をsubstrで切り出し、切り出した値を新しくselect項目に追加し、order by句でその項目をソートする
という方法を使う(んだと思ってます)
例)
あるテーブルのチームID(形式:[所属番号1桁]-[連番3桁])の所属番号部分は昇順、連番部分は降順という並びでチームIDを取得したい。
(チームID例:1-050)
// mysqlの場合substring 引数は次の通り→substring(value, start, length)
$query->selectRaw('*, SUBSTRING(team_id, 1, 1) AS affiliation_of_team_id ,SUBSTRING(team_id, 3, 3) AS sequence_of_team_id')
->orderBy('affiliation_of_team_id')
->orderBy('sequence_of_team_id','DESC'));
この場合、以下のような並びでチームIDを取得できる
1-050
1-049
2-020
2-019
3-044
…
9-099