猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

未分類

CakePHPのpaginateのまとめ

投稿日:

joinした列でソートする

ソートというのはViewの列名をクリックしてするソートではなく、
ControllerでのSQLのソートです。

virtualFieldsをMoldeに設定します。

 'Csv.file_name',
        'sort_upload_date' => 'Csv.upload_date',
        'sort_status' => 'Csv.status',
    );
・・・

そしてControllerのOrderではモデル名をつけないバーチャルフィールド名を使用します。

public function index() {
    $this->Csv->recursive = 0;
    $this->paginate = array(
         'order' => array('sort_period' => 'desc','sort_upload_date'=>'desc'),
    );
    $this->set('csvs', $this->Paginator->paginate());

paginateでorder条件を複数指定する

paginateでorderを複数指定しても効きません。
コアライブラリの修正が必用です・・・。
・lib/Cake/Controller/Component/PaginatorComponent.php

・app/Controller/Component/PaginatorComponent.php
にコピーします。
そして下記1行を修正します。

//$options['order'] = array($options['sort'] => $direction);
$options['order'] = array_merge(array($options['sort'] => $direction), $options['order']);

paginateでorderを複数指定したサンプルです。
Controllerのアクション内で以下のようにします。

$this->paginate = array(
    'Csv' => array(
        'conditions' => array(Csv.val LIKE' => '%'.$val.'%' ),
        'fields'=>array
            'Csv.id','Csv.val,'Comp.comp_name','User.user_email'),
        'order' => array('Csv.id' => 'asc','Csv.val'=>'asc'),
        'joins' => array(array('type' => 'LEFT', 'alias' => 'Comp', 'table' => 'companies','conditions' => 'Csv.comp_code = Comp.comp_code'),
                         array('type' => 'LEFT', 'alias' => 'User', 'table' => 'users','conditions' => 'Csv.user_id = User.id')
            )
        ),
    );
$this->set('csvs', $this->Paginator->paginate());

Gooleアドセンス用336

Gooleアドセンス用336

-未分類
-,

執筆者:

関連記事

「Cookie」と「セッション」と「セッションCookie」の違い

セッションという日本語のイメージこそ、最も注意すべき点です。 WEBサーバーとブラウザの間には、トンネルのような物理的な接続状態は存在しません。 一回ポッキリのデータのリクエスト・レスポンスしかHTT …

CakePHPの初期画面を変更する

/Config/routes.phpを編集すればOKです。 もちろん事前に対応するページを作成しておかなくてはいけません。 まずはbakeコマンドでサンプルページを作成しておけばスムーズに開発できるで …

CakePHPからphpスクリプトをバックグラウンドで起動する

時間のかかる処理がある場合、 phpスクリプトをキックするだけで画面ではレスポンスを返したい場合があります。 app/Console/Command/text.php に実行したいphpスクリプトを置 …

CakePHP FormHelperでhidden属性を設定する

ユーザーIDなどのラベルなどで使用する変更できない値などを渡す場合に便利です。 echo $this->Form->hidden(‘User.cust_code’ ,array(‘valu …

PHPのダブルクォーテーションとシングルクォーテーション

PHPではどちらでも利用できます。 ダブルクォーテーション => 文字列中の変数を展開する シングルクォーテーション => 文字列中の変数を展開しない という違いがあるようですが、あまり意 …