エス技研

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


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)

    :
    :
    
Form->input('sort', array( 'type' => 'text', 'div' => false, 'label' => false ))?>
Form->input('direction', array( 'type' => 'text', 'div' => false, 'label' => false ))?>
: :

————–
 
続いて Modelを修正します。
こちらも「array(‘field’ => ‘sort’, ‘type’ => ‘value’),」を追加するだけです。
細かな説明は、その2の方を見てもらえると分かりやすいかと思います。
 
————–(/app/Model/User.php)
[php mark=”11,12″]
‘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’),
);
:
:
}
[/php]
————–
 
また、デフォルトでソートキーを設定したい場合は、Controllerに「’order’ => array ( ‘User.username’ => ‘desc’, ‘User.id’ => ‘desc’ ),」の設定を追加しておきます。
limitの時と同じく、ここで設定してあってもソートキーの入力があった場合はそちらが優先されます。
 
 
————–(/app/Controller/UsersController.php)
[php mark=”7″]
paginate = array(
‘conditions’ => $conditions,
‘order’ => array ( ‘User.username’ => ‘desc’, ‘User.id’ => ‘desc’ ),
‘limit’ => 3,
);
:
:
}
[/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 5.x

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

Message

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

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

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

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

  関連記事

CakePHP 2.3 テーブルの項目を演算した結果を条件として抽出する方法

アソシエーション(連携)している先のテーブルの項目で演算をする場合の考え方と注意点をサンプルソースを用いて説明しています。分かってしまえば簡単です。

CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説

CakePHP3でデータ保存処理のログを取得する方法。save()では true、falseの戻り値しか取得できないが、saveOrFail()と try…catch文を使いエラーログ、エンティティを取得し、不具合の解析を行う。

CakePHP3のバージョンを指定してインストールする詳細な手順を解説
CakePHP3、CakePHP4、CakePHP5のバージョンを指定してインストールする詳細な手順を解説

CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。

CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合

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

CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定

CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP5系でDeprecatedを回避しfindListでキーと値のカラムを指定して取得する方法
CakePHP5系でDeprecatedを回避しfindListでキーと値のカラムを指定して取得する方法

CakePHP4のfindListでキーと値のカラムを指定してテーブルにアクセスする方法がCakePHP5では「Deprecated(非推奨)」となった。推奨の記述方法を解説。

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()関数と同じ。