エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP 2.3 Search Pluginで検索処理 その4前方一致検索、後方一致検索、不等号による検索、between句による範囲検索

      2014/06/26

Search Pluginで検索処理 設置方法 その4

 

Search Pluginで部分一致検索の参考サイト

 
今回は、前方一致検索、後方一致検索、不等号による検索を行います。
今回の処理は、「CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法」をベースにしていますので、そちらもご覧ください。
 
順番的にはもっと最初の方で提示するべき項目だと思いますが、これまでは「value」による完全一致検索、「like」による部分一致検索で処理を作ってきました。
 
ですが、この辺で改めて、完全一致検索、部分一致検索以外の検索の方法を書いておきます。
 
とはいえ、これについては、特に難しいものではありませんので、下記のサイトなどを見ていただくと分かるんじゃないかと思います。
http://mawatari.jp/archives/introduction-of-cakedc-search-plugin-for-cakephp
 
 

Search Pluginで 前方一致検索のサンプルコード

 
前方一致検索
「ユーザ名」の項目を前方一致検索する場合は、下記の通り「’before’ => false, ‘after’ => true,」を追加します。Model以外の修正はありません。
————–(/app/Model/User.php)

————–
 

Search Pluginで 後方一致検索のサンプルコード

 
後方一致検索
「ユーザ名」の項目を後方一致検索の場合は、下記の通り「’before’ => true, ‘after’ => false,」を追加します。Model以外の修正はありません。
————–(/app/Model/User.php)

————–
 

Search Pluginで 不等号による検索のサンプルコード

 
不等号による検索
「ユーザID」の項目を不等号によって検索をする場合は、下記の通り「id」を Modelと Viewのページにそれぞれ「id_from」「id_to」の項目変更しています。
不等号は「field」の項目の後ろに「>=」「<=」を記述します。   まぁ、今回は、すでにある項目を流用するため IDを不等号検索に使いましたが、実実装に関しては IDを from、toで検索することはないでしょうね。   --------------(/app/Model/User.php)

--------------   --------------(/app/View/Elements/searchForm.ctp)

--------------    

Search Pluginで betweenによる範囲検索のサンプルコード

 
続けて、between句による範囲指定の方法です。
 
不等号による範囲指定での検索は、betweenによる範囲検索より検索スピードが劣るとされています。
そのため、betweenによる範囲指定も探してみましたが、うまく実装することができませんでした...
 
現時点では、「/app/View/Elements/searchForm.ctp」は同じものを使います。
そして、Modelは、以下のように設定します。
 
————–(/app/Model/User.php)

————–
 
「’type’ => ‘expression’」を設定し、「method」で配列を渡す関数を通すことで、自動的に「between句」を生成してくれます。
この方法でも、「id_from」に値が入力されれば正しく betweenで検索されます。
 
ですが、「id_from」の値が入っていない場合(「id_to」のみの入力の場合)は、入力がないものとして処理されません。
 
 
「id_to」のみの入力の場合も検索の処理をさせる方法については、分かりませんでした!!!
分かる方、どなたか教えてくださいっ!!
 
 
 
【CakePHP 2.3 Search Plugin検索処理 目次】
CakePHP 2.3 Search Pluginで検索処理 その1設置方法
CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法
CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法
CakePHP 2.3 Search Pluginで検索処理 その4前方一致検索、後方一致検索、不等号による検索、between句による範囲検索
CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索
CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能
CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

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

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP 2.3で saveの便利な使い方・サンプルソース付き

CakePHPのレコードを保存、更新する際に使う Saveを詳細解説します。

CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法
CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法

CakePHP3のツリービヘイビアを使ったツリーカテゴリーの子階層も含めての検索を検索プラグイン「friendsofcake/search」を使って実現する方法を解説しました。

CakePHP2の検索Plugin CakeDC/Searchで重複を省くgroup by(distinct)の実装方法
CakePHP2の検索Plugin CakeDC/Searchで重複を省くgroup by(distinct)の実装方法

CakePHP2の検索プラグイン「CakeDC/Search」で、重複レコードを省くgroup by、distinctを使う方法についての解説。設定する場所はpaginatorの条件とするので、find()関数と同じ。

CakePHP3でページごとに読み込むJavaScript、CSSを変える処理の解説
CakePHP3でページごとに読み込むJavaScript、CSSを変える処理の解説

CakePHP3でJavaScriptやCSSを編集する基本形から、それらやテンプレート(エレメント)を特定のテンプレートを読み込んだときのみ編集、実行するための方法、ブロック化について解説。

CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい

アソシエーション先のテーブルのカラムをキーにソートをしたデータを取得したい!ときの記述方法を解説。「orderAsc()」ではなく「contain()」の中にSort条件を記述する。

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。

CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法
CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法

CakePHP3にComposerからインストールできないプラグインやライブラリなどを利用する方法、vendorにファイルを設置し、composer.jsonを更新し、それを呼び出す方法を詳細に解説。

CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを

CakePHP3でルーティングの設定変更をしたけど反映されない!そんなときは慌てず騒がずキャッシュをクリアしよう!ルーティングの設定もキャッシュされることがあるらしい。

CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
CakePHP3、CakePHP4のdatetime型カラムの日時の扱い。秒まで表示する方法

CakePHP3の日時カラムで秒まで扱う場合はdate()、strtotime()関数ではうまくいかない。CakePHP3であらかじめ用意された「i18nFormat()」を使用する。