一回ドットインストールの動画を見て理解していたつもりだったけど、昨日やってみると全然覚えてなかったという話。フレームワークに慣れすぎってのも問題ですね。。。
とりあえずもう一度見なおして、即席でクラスを用意してみました。
Paginateで大切と思うのは、SQLの理解(そもそもlimit offsetの書き方を覚えていなかった。。。orz)
mysql> SELECT * FROM table_name limit 0, 5;
上のSQLは、「1から5までのレコードを取得する」SQLです。この1
を2
、3
と増やしていくと、記事が6〜10(2ページ目)、11〜15(3ページ目)、16〜20(4ページ目)、、、と取得できるようになる。動画内ではoffset
と呼ばれていました。
また大切なことがもうひとつ。このoffset
を決める処理。
<?php ... $offset = $this->contentsPerPage * ($this->page - 1);
$this->contentsPerPage
は1ページにいくつ取得して表示する任意の値です(今回1ページに5記事表示したいので5と書いています)。
$this->page
は現在のページ数です。デフォルトで1を入れているので、マイナスの値になることはありません。
これを理解すればPaginateの処理は大丈夫だはず。