バーチャルフィールドで生成したカラムで、ページング表示とソート

悩んでたのが解決出来たのでメモ。
$this->Model->virtualFields['count'] = 0;
$this->paginate = array(
FIELDS => array(
'Model.id',
'Model.title',
"(select count(*) from logs as Log where Log.foreign_key=Model.id) as Model__count",
),
ORDER => array(
"Model__count" => 'desc',
"Model.id" => 'desc',
),
);

とかってやってて、なぜか「Model__count」のorder byが消えてしまっていた。
これを
$this->Model->virtualFields['count'] = 'Model__count';
$this->paginate = array(
FIELDS => array(
'Model.id',
'Model.title',
"(select count(*) from logs as Log where Log.foreign_key=Model.id) as Model__count",
),
ORDER => array(
"count" => 'desc',
"Model.id" => 'desc',
),
);

でうまくいった。

viewでは、
<?php echo $this->Paginator->sort('count', 'カウント数'); ?>

でソートのリンクが表示される。

参考サイト
主モデルに存在しないカラムで、ページング表示をソート
バーチャルフィールド — CakePHP Cookbook 2.x ドキュメント
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret


プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事