やりたいこと
cakephpでODER BY FIELD
を使って特定のカラムを部分一致で一致したもの順に並び替えられるようにしたい
例)
Postテーブル
ID | 名前 |
---|---|
1 | hoge |
2 | fuga |
3 | piyo |
PHP
1... 2$posts = $this->Post->find('all', compact('conditions', 'fields', 'limit', 'recursive', 'order'); 3...
上記のようなコードでPostテーブルの値を取り出す際にhoge,fuga,piyoの順番を文字列中にoの含むもの順で表示したいとすると、
1. hoge 3. piyo 2. fuga
のようになるはずです。
試したこと
$order = array('FIELD(Item.equipment_mansion LIKE, "%a%", "%b%", "%c%"..., "%z%") DESC');
上記のようにorderを設定し、取り出そうしたがorder by fieldでlikeは使えないっぽい(Syntaxエラーが出る)
LIKEにこだわりはないですが、部分一致にする場合これしかないのかなと思っています。
SQLの知識があまりないので教えてください。。。
** また別にでも何かいい方法はないでしょうか? **
修正しました
すみません、テーブルが横向きになっていてわかりにくかったので直しました。
ID、名前がカラム名です。
今自分が調べた中で一番近いのかなと思ったのはcase whenを使う方法です。
調べていく中で初め知った構文だったのでいまだに使い方がわかっていません。泣
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。