コントローラで別モデルのページネイトを使う: CakePHP

Pocket

usersテーブルのidとaccountsテーブルのuser_idで左結合した結果をページネイトする。
下記サンプルはusersテーブルにはemailフィールド、accountテーブルにはplanフィールドがあるとする。

上記の条件でページネートをExamplesControllerに作成する。

class ExamplesController extends AppController {

    public $uses = [ 'User', 'Account' ];

    public $components = [ 'Paginator' ];

    public function index() {
        $this->Paginator->settings = [
            'User'    => [
                'limit'      => 5,
                'conditions' => [ 'User.role <> ' => 'admin' ],
                'joins'      => [
                    [
                         'type'       => 'LEFT',
                         'table'      => 'accounts',
                         'alias'      => 'Account',
                         'conditions' => 'User.id = Account.user_id'
                     ]
                 ],
                 'fields' => [
                     'User.id',
                     'User.email',
                     'Account.plan',
                 ],
                 'order'   => [ 'User.created' => 'DESC' ],
             ],
         ];
         $this->set( 'users', $this->Paginator->paginate( 'User' ) );
    }
}

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。