エス技研

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


CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

      2014/06/26

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

 

Search Pluginで検索処理 queryを使って 日付の範囲検索

 
今回は、「’type’ => ‘query’」を使い、オリジナルの検索条件を記述して検索する方法を行います。
今回の処理は、「CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法」をベースにしていますので、そちらもご覧ください。
 
 
本当は、「Group By句」による集計の処理をやろうかと思っていましたが、Group By + sumによる集計は、集計した項目をバーチャルフィールド(virtual fields)を使って値を取得する必要があるため(バーチャルフィールドを使わなくても値を取得できないわけではないですが)、長くなりそうなので、「’type’ => ‘query’」の方を先にやってみたいと思います。 
 
 
「’type’ => ‘query’」を使うと、検索の条件を柔軟性を持って設定することができるため、もともと用意されている検索方法以外の検索方法を行いたい、と思った場合に利用できる方法です。
 
具体的な検索方法を考える際にあれこれ悩みましたが、あまりいいサンプルを思いつかず、今回の記事は、下記のサイトを参考にさせていただきました。
http://kamakurasoft.net/blog/?p=1479
 
 

Search Pluginで検索処理 queryを使って 日付の範囲検索のサンプルコード

 
まずは、Viewから。
Viewの Elementsに下記の項目を追加してください。
 
————–(/app/View/Elements/searchForm.ctp)

————–
 
「’label’=>’開始年月日(年-月-日)’,」をコメントにしていますが、labelの設定があると入力エリアのすぐ上にラベル表示がされるためにコメントにしています。
ちなみに、labelの設定がない場合は、デフォルトの設定として項目名の「start」がラベル名として表示されます。そのため、labelを消すためには「’label’=>”,」の設定が必要なようです。
 
 
続けて、Modelです。
サンプルは開始日と終了日での設定がしてありますが、ここでは面倒なので開始日しか設定していません。
 
日付の項目に関して、今回の日付項目は、「start」という項目名で設定しています。その中から、日付の「年」の項目は「$data[‘start’][‘year’]」として取得します。同じように「月」「日」は、「$data[‘start’][‘month’]」「$data[‘start’][‘day’]」として取得します。
 
私は、最初のうちはこのことがよく分からず、日付の項目の項目名は一つなのに、年月日のそれぞれの項目はどうやって取得したらいいのだろう、としばーらく悩んでいました。
分かってしまえば意外に簡単ではあるんですが...
 
————–(/app/Model/User.php)

————–
 
 
また、入力の値を再び設定する処理で、下記のように設定してみましたがうまくいかず、デフォルトの設定に戻ってしまいます。
こちらの設定方法については後日分かり次第改めて対応したいと思います。
 
————–(/app/Model/User.php)

————–
 
どなたかわかる方、教えてくださいっ!!
 
 
 
【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.

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

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

  関連記事

CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルのアップロード処理を自作・解説付き・その1

CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!

CakePHP3のプラグイン「CakeDC/Users」を日本語化・翻訳ファイルもダウンロード可
CakePHP3のプラグイン「CakeDC/Users」を日本語化・翻訳ファイルもダウンロード可

CakePHP3のユーザ管理、ログイン認証プラグインである「CakeDC/Users」のメッセージを日本語にする手順の解説とともに、日本語の翻訳ファイルを提供。ファイルを設置すれば日本語になる!

CakePHP3でテーブルにカラムを追加したときに変更するポイントのまとめ
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ

CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。

CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」
CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」

CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。

Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法

CakePHP4のコマンド(シェル)に対して、環境変数を指定して実行する方法を解説。LinuxとWindows上のXAMPPとでは記述方法が異なるため、Windowsのsetコマンドについても詳細解説。

CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説
CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説

CakePHP4で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定しそれを読み込み判別する。

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども

CakePHP3でHtmlHelperを使ってリンクの設定をする方法のまとめ。基本形からURLを指定、class、id、targetを指定、mailtoのリンク、画像をアンカーに、JavaScriptのダイアログなどの解説。

CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説

CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。

CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3で生の SQLの実行はConnectionManagerを使う

CakePHP3で生の SQL文を実行する方法を解説。クリエビルダーを使う場合は TableRegistryを利用するが、SQLを実行する場合は ConnectionManagerを使う。プリペアードステートメントの使用方法も解説。