CakePHP(MySQL)でちょっと変わった検索条件。日々の生活や仕事やWebや美術館やビールや育児など。フォローするホーム30日ブログCakePHP(MySQL)でちょっと変わった検索条件。久しぶりのCakePHPネタです。30日ブログに機能を追加しました。30日ブログ数ヶ月ぶりにソースコードを覗けば、もはや自分で書いたものとは思えない世界が広がっていました。それでも既存コードをコピペしてイジリながらで、思っていたより簡単に機能追加。フレームワークでMVCが分離されていることで、後から見返してもわかりやすく、機能の追加がしやすいということを実感しました。●ランダム表示DBに登録されている「テーマ」をトップページにランダム表示(3件)するようにしました。rand()”)です。ランダムな数値を出して、それをidの検索条件にして・・・など考えていましたが簡単でした。●カンマ区切りフィールドの検索DBに登録されている「テーマ」をカテゴリー別に表示するページを追加しました。http://30daysblog.com/themes/cateview/1cateviewという、何ともダサいネーミングのアクションです。各「テーマ」レコードは「カテゴリー」フィールド(category_id)を持っているのですが、テーマが複数カテゴリーに属するように“1,3,5”のようにCSVでcategory_idを保持しています。本来DB設計としてはやってはいけないことなんだと思いますが、諸々の面倒を考えこのような形をとっています。このCSVの中から特定のcategory_idを取得する方法についてWhereのLIKE検索を考えました。‘%$param%’しかしこれでは、$paramが”1′′の場合、”1′′以外に”11′′や”10′′などにもマッチしてしまいます。同じような課題を人力検索はてなで見つけました。MySQLでデータの保存方法について質問です。1つのフィールド内に「1,2,3」と言うようにカンマ区切りのデータを保存する箇所があります。人力検索はてななるほど正規表現を使うのかー。以下CakePHPでの実装。$data);}CakePHPではfindを使えば柔軟にSQL文を作成できます。以下、自分でコピペする際の雛型。