※自分用のメモ代わり
Orm使っていてLIKE検索しようとした時にどうすりゃいいか
少し悩んだので共有。
####状況
5万行ほどのレコードが格納されているMySQLのテーブルの
あるカラムへLIKE検索をかけたい。
かけた結果20件を取得してなんかする
####間違ったコード
ormtest.php
$result = \Model_Table::find('all')
->where('fieldname LIKE', "%searchtext%")
->limit('20');
#####どこが間違ったか
まず「Allowed memory」って怒られました。
調べた結果、メソッドチェーンはfind('all')した結果のオブジェクトにたいして
条件を絞って検索を行うみたい。
そら5万件を一気に検索したら上記の様なエラーは出ますね…
####通ったコード
ormtest.php
$conditions['where'] = array(array('fieldname','LIKE',"%searchtext%"));
$conditions['limit'] = '20';
$result = \Model_Table::find('all',$conditions);
#####どうやって上手くやったか
http://search.net-newbie.com/fuel/packages/orm/crud.html
こちらのドキュメントを見ながらCRUDで検索SQLに追加をしました。
CakeでFindする時みたいに$conditionsに色々詰め込む方式と僕は認識しました。
####反省点
ちょうど隣の席で1時間前位にその問題でこうしたほうがいいとか
色々話してたという…悩む前に相談しろよという…何してんだ僕は。