ブログ・エス技研

当ブログは引越しをしました。10秒後に自動で転送しますが、転送されない場合は、http://blog.s-giken.net/ をご覧ください。
ブログ・エス技研 TOP  >  スポンサー広告 >  CakePHP 2.x >  CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --年--月--日 --:-- ] カテゴリ:スポンサー広告 | TB(-) | CM(-)

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

今回は、検索をする際に、あらかじめソートキーを選択できるようにする処理を作っていきます。


ソートキー(ORDER BY)の設定は、その2(http://ssgiken.blog.fc2.com/blog-entry-31.html)の「limit」の設定ができさえすれば簡単に分かると思います。
また、今回の処理は、その2をベースにしていますので、そちらもご覧ください。


なぜなら、タイトルをクリックしてソートをさせた際に表示される URLを見れば「sort:User.username/direction:asc」表示されていますので、「sort」「direction」という項目名でソートをさせる項目を設定している、ということがなんとなく分かるでしょう。


まず、入力フォームです。
「表示件数」の次あたりに追加してもらえればいいと思います。
今回は、動作を検証するためのものですので、text形式で作っていますが、実際に運用する際には、プルダウンの選択式にする必要があるでしょうね。

--------------(/app/View/Elements/searchForm.ctp)
    :
    :
    <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)
<?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)
<?php
class UsersController extends AppController {  
    :
    :
    $this->paginate = array(
      'conditions' => $conditions,
      'order' => array ( 'User.username' => 'desc', 'User.id' => 'desc' ),
      'limit' => 3,
    );
    :
    :
}
--------------


【CakePHP2.3 Search Plugin検索処理 目次】
CakePHP2.3 Search Pluginで検索処理 その1設置方法
CakePHP2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法
CakePHP2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法
CakePHP2.3 Search Pluginで検索処理 その4前方一致検索、後方一致検索、不等号による検索、between句による範囲検索
CakePHP2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索
CakePHP2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能
CakePHP2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索
関連記事
スポンサーサイト
[ 2013年09月02日 01:02 ] カテゴリ:CakePHP 2.x | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

エス技研

Author:エス技研
性別:男性
職業:Web系エンジニア
エンジニアになって 15年ほど経ちますが、その途中で 5年ほどディレクタ、マネジメントを中心とした業務を行っていたためにやや現場を離れていましたが、転職をきっかけに 2012年に現場に復帰し、新たな技術を楽しみながら勉強しています。
メインの環境は LAMP環境です。

FC2ブログランキング
FC2カウンター
FC2拍手ランキング
GoogleAdWords
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
検索フォーム
ブロとも申請フォーム
QRコード
QR
フリーエリア


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。