CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能
2014/06/26
Search Pluginで検索処理 設置方法 その6
Search Pluginで検索処理 ORDER、sortソートの機能
今回は、検索をする際に、あらかじめソートキーを選択できるようにする処理を作っていきます。
ソートキー(ORDER BY)の設定は、「CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法」の「limit」の設定ができさえすれば簡単に分かると思います。
また、今回の処理は、「CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法」をベースにしていますので、そちらもご覧ください。
なぜなら、タイトルをクリックしてソートをさせた際に表示される URLを見れば「sort:User.username/direction:asc」表示されていますので、「sort」「direction」という項目名でソートをさせる項目を設定している、ということがなんとなく分かるでしょう。
Search Pluginで検索処理 ORDER、sortソートのサンプルコード
まず、入力フォームです。
「表示件数」の次あたりに追加してもらえればいいと思います。
今回は、動作を検証するためのものですので、text形式で作っていますが、実際に運用する際には、プルダウンの選択式にする必要があるでしょうね。
————–(/app/View/Elements/searchForm.ctp)
|
1 2 3 4 5 6 7 8 9 10 |
: : <dt><label>ソート条件・キー</label></dt> <dd><?php echo $this->Form->input('sort', array( 'type' => 'text', 'div' => false, 'label' => false ))?></dd> <dt><label>ソート条件・降順昇順</label></dt> <dd><?php echo $this->Form->input('direction', array( 'type' => 'text', 'div' => false, 'label' => false ))?></dd> : : |
————–
続いて Modelを修正します。
こちらも「array(‘field’ => ‘sort’, ‘type’ => ‘value’),」を追加するだけです。
細かな説明は、その2の方を見てもらえると分かりやすいかと思います。
————–(/app/Model/User.php)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php class User extends AppModel { : : // 検索対象のフィールド設定 public $presetVars = array( array('field' => 'id', 'type' => 'value'), array('field' => 'username', 'type' => 'value'), array('field' => 'nickname', 'type' => 'value'), array('field' => 'limit', 'type' => 'value'), array('field' => 'sort', 'type' => 'value'), array('field' => 'direction', 'type' => 'value'), ); : : } |
————–
また、デフォルトでソートキーを設定したい場合は、Controllerに「’order’ => array ( ‘User.username’ => ‘desc’, ‘User.id’ => ‘desc’ ),」の設定を追加しておきます。
limitの時と同じく、ここで設定してあってもソートキーの入力があった場合はそちらが優先されます。
————–(/app/Controller/UsersController.php)
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php class UsersController extends AppController { : : $this->paginate = array( 'conditions' => $conditions, 'order' => array ( 'User.username' => 'desc', 'User.id' => 'desc' ), 'limit' => 3, ); : : } |
————–
【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を使って 日付の範囲検索
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP 2.3でOn Duplicate Key構文を実装
CakePHPで On Duplicate Key構文を Queryを利用して実装する方法をサンプルソース付きで解説します。
-
-
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3でルーティングの設定変更をしたけど反映されない!そんなときは慌てず騒がずキャッシュをクリアしよう!ルーティングの設定もキャッシュされることがあるらしい。
-
-
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。
-
-
CakePHPを学ぶ際にはオブジェクト指向を学ぼう
CakePHPはオブジェクト指向で書かれていますので、CakePHPを学ぶにはオブジェクト指向も学びましょう。
-
-
CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。
-
-
CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
CakeDC謹製UsersプラグインのCakePHP4版の紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。
-
-
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、CakePHP5でクリエビルダーを利用してテーブルからレコードを取得する際、asを使用してカラムの別名で値を取得したい場合の対応方法を解説。また、別名にはハイフンやアスタリスクなど使用できない文字がある点も解説。
-
-
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHP4のエラーメッセージ、完了メッセージなどを表示するフラッシュ処理の解説。Controller、レイアウトファイル、テンプレートファイルでそれぞれ処理を指定する。
-
-
CakePHP3のアソシエーション機能を使い関連レコードをまとめて削除
CakePHP3でレコードを削除する際に関連するレコードをまとめて削除する機能の解説。フレームワークのメリットを存分に発揮し、コマンドを1行追加するだけで実装可能。
-
-
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3でtitleタグ、h1タグのテキストをデフォルトから変更する方法を解説。テンプレートファイルに「$this->assign()」でテキストを指定して「/Layout/defult.ctp」で受け取る。