テーブルから複数の部分一致で取得し、かつ入力された条件順に表示する方法
LIKEがWHERE以降で利用できないっぽかったのでどうしたもんかと思ってたら
ずばりここにあった
Mysql: Order by like?
// 検索ワード複数入力時は入力順に表示する
$words = ['hoge','fuga'];
$order = " ORDER BY CASE ";
$no = 0;
$last = count($words) - 1;
foreach ($words as $word) {
$order .= " WHEN word LIKE '%".$word."%' THEN ".($no+1);
if ($last == $no) {
// 最終処理
$order .= " END";
}
$no++;
}
dump($order);
ORDER BY
CASE WHEN word LIKE '%hoge%' THEN 1
WHEN word LIKE '%fuga%' THEN 2 END
bindしろよとかいろいろあるけど直接SQL発行している分はとりあえずこれで乗り切れそう