エス技研

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 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP 2.3でOn Duplicate Key構文を実装

CakePHPで On Duplicate Key構文を Queryを利用して実装する方法をサンプルソース付きで解説します。

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

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

CakePHPを学ぶ際にはオブジェクト指向を学ぼう

CakePHPはオブジェクト指向で書かれていますので、CakePHPを学ぶにはオブジェクト指向も学びましょう。

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

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

CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法

CakePHP3でtitleタグ、h1タグのテキストをデフォルトから変更する方法を解説。テンプレートファイルに「$this->assign()」でテキストを指定して「/Layout/defult.ctp」で受け取る。

CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法

CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。

CakePHP3のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP3のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)

CakePHP3の英語のメッセージを日本語化(多言語化)する手順を解説。オリジナルのメッセージを作成する方法やプログラムで文言を追加する場合の対応なども解説。

URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開

URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。

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

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

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

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