LoginSignup
7

More than 5 years have passed since last update.

OrmでLIKE検索する

Posted at

※自分用のメモ代わり
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時間前位にその問題でこうしたほうがいいとか
色々話してたという…悩む前に相談しろよという…何してんだ僕は。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7