paginator のソート指定

通常は sort のキーとして指定できるのは対象テーブルのフィールド名のように思われる。
でもいろいろいじってて対象テーブルではなく関連テーブルのフィールド名を使う必要がでてきた。

なんとかならないかと思ってたけど以下で解決。(でもやっていいかどうかはわからない)
sort のキーとして判定されるには以下の2つの条件のどちらかの場合。

  1. 対象モデルでそのモデルのエイリアス名をプロパティとするモデルのフィールドである場合
  2. 対象モデルのフィールドである場合
class SampleController extends AppController {
    public $uses = array('User', 'Blog');
    public $default = array(
        'Blog' => array(
            'extra' => 'hoge',
        ),
    );

    public function paginate()
    {
        $this->Blog->Blog = $this->User;
        $this->paginate('Blog');
    }
}

こうすると通常は Blog モデルのフィールド名を sort キーとして使用しなきゃならないけど
User モデルのフィールド名が使えるようになるはず。