PaginateのソートでJOINしたテーブルのカラムを指定・・・
動かない・・・なぜだろうと調べてみたのでメモ
testsテーブル(id, name)
test_detailsテーブル(id, test_id, name)
があったとします。
echo $paginator->sort('氏名', 'TestDetail.name');
では動きません。
SQLエラー防止の為に親テーブルにないカラムは無視するようです。
(http://xxxx/sort:column/direction:ascで適当なカラムを指定できるので)
ではどうするのか・・・
CakePHP1.3で
MODELのプロパティでvirtualFieldsがあるのでこれを使用します。
MODEL
public $virtualFields = array( 'detail_name' => 'TestDetail.name', );
※detail_nameは任意のカラムに存在しない名前で
VIEW
echo $paginator->sort('氏名', 'TestDetail.detail_name');
としてあげればOKです。
(virtualFieldsは設定したMODELでfindするたびにfieldsに設定されて邪魔なので、一覧表示で必要な時だけプロパティ設定した方がいいです。)