[CakePHP] 検索機能

CakePHPで簡単に検索する方法。。。うーん。。。

使い方

  • $this->Model->findByFieldName($FieldNameSearchWord)基本
  • $this->Model->findByIdAndName($id, $name)も可
  • $this->Model->findByIdOrName($id, $name)も可

スポンサードリンク

注意など

  • いくつも続けて書く事ができる(findByNameOrTitle([KEYWORD]))
  • ANDとORは混在できない
  • PHP4とPHP5で書き方が違うらしい

あいまい検索はできない

※あいまい検索(LIKE %KeyWord%)はSQLインジェクション対策でNGらしい。発行されるSQLは以下のとおりなので。

SELECT
 `Item`.`id`,
 `Item`.`group_id`,
 `Item`.`name`,
 `Item`.`item_group_id`,
 `Item`.`created`,
 `Item`.`updated`,
 `ItemGroup`.`id`,
 `ItemGroup`.`group_id`,
 `ItemGroup`.`name`,
 `ItemGroup`.`created`,
 `ItemGroup`.`updated`
FROM
 `prefix_items` AS `Item`
LEFT JOIN `prefix_item_groups` AS `ItemGroup`
ON (`Item`.`item_group_id` = `ItemGroup`.`id`)
WHERE
 `Item`.`name` = '%test'
LIMIT 1

参考文献

  • CakePHP findBy での複数指定を調べたメモ | Sun Limited Mt. :
    http://www.syuhari.jp/blog/archives/135
  • findBy :: データを取得する :: モデル :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook :
    http://book.cakephp.org/ja/view/451/findBy

関連記事

スポンサードリンク

Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です