CakePHP paginateの基本

このエントリーをはてなブックマークに追加
[`google_buzz` not found]

CakePHPでは「paginate」(ページング機能)が最初から搭載されています。
1.1系では別に用意する必要があったページングが、1.2系では最初から搭載されているので
わざわざコーディングすることなく利用できるのは開発の効率がよくなるものです(笑

さてこの「paginate」(ページング機能)を少し解説していこうかと思います。
といっても自分のメモ的なものもありますが。。。

「paginate」(ページング機能)を利用する前に、CakePHPでまず必要な用意はありません(笑
前述したとおり1.2系では最初から利用できるので特別な用意をする必要がありません。
なぜ用意が必要がないかと言うと、必要なものはCakePHP側で先に用意してくれているからです。
例えば、「paginate」(ページング機能)を使うには通常はヘルパーの「Paginator」、ajax化を利用するなら
「ajax」ヘルパーが必要になりますが、CakePHPが各ヘルパーが無いと判断したら、自動で利用できるようになっています。
これは楽です(笑
ではデータベースから取得するにはコントローラーでどう記述するかとなると、
まずは基本は次のようになります。

$this->paginate();

すごく簡単な説明でした(笑
では条件を指定する場合、

$this->paginate($conditions);

またまた簡単です(笑
ここで躓きそうな悩み。。。
モデルを指定していないのに、なぜデータが取得できるか。
それは「paginate」が自動でモデルを内部で処理をし、データベースからデータを取得する
モデルを自動で設定してくれています。
ここでさらに疑問となるのが「Aコントローラー」の「Aモデル」の「paginate」ではなく
「Aコントローラー」から「Bモデル」の「paginate」のデータを取得する場合はどうするのか。

さすがにCakePHPは自動とはいきません(笑
そこで取得するデータのモデルを指定する場合は次のようになります。

$this->paginate('取得するモデル名');

ここで「?」と思う方、はい先ほどの説明でモデルを指定する第1引数には
条件指定を入れている場所でした。
実はCakePHPでは第1引数が文字列の場合は、それをモデル名として処理します。
では条件はどこに記述するのかですが、この場合は第2引数が条件指定の渡しとなります。

$this->paginate('取得するモデル名',$conditions);

これでモデルを指定したり、条件を指定したり自由に「paginate」(ページング機能)を使いこなせると思います。
ちなみに「$conditions」の指定方法は「find」と同じです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. admin より:

    参考していただきありがとうございました!
    これからも、参考にしていただける内容を記載していきます!!

  2. showBOO より:

    参考になりました。ありがとうございました!!