codeigniter4 / codeigniter4/CodeIgniter4

`Model::paginate()` behavior when `$page` exceeds the last page

オープン
#8,904 コメント 24 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement
主要言語
PHP
スター
6k
フォーク
2k
平均マージ
1日 11時間
マージ済み PR(30日)
73

説明

### PHP Version

8.3

### CodeIgniter4 Version

4.1.5

### CodeIgniter4 Installation Method

Manual (zip or tar.gz)

### Which operating systems have you tested for this bug?

Linux

### Which server did you use?

apache

### Database

MySQL 5.6

### What happened?

When i paginate the model like this `$UsersMode->orderBy('id_user', 'ASC')->paginate(8, 'group', $page_number);`

returns "`SELECT * FROM users ORDER BY id_user ASC LIMIT 8, 8`" based on offset and per page number

But my total count rows in the table are 24, so when i reach the end `16, 8` it returns me the same query as the last existing page in my database even with `$page_number = 100`

### Steps to Reproduce

```php
public function load_more($page_number = 2)
{
$UsersModel = new UsersModel();

$this->ViewData['Page'] = $page_number;

$this->ViewData['Users'] = $UsersMode->orderBy('id_user', 'ASC')->paginate(8, 'group', $page_number);

echo $UsersModel->db->getLastQuery();
}
```

returns "`SELECT * FROM users ORDER BY id_user ASC LIMIT 8, 8`"

But my total count rows in the table are 24, so when i reach the end `16, 8` `$page_number = 10` and go to a page number more than 3 it returns the same query "`SELECT * FROM users ORDER BY id_user ASC LIMIT 16, 8`"

### Expected Output

Going to a page number more than the total count rows of my table it should return the propper offset even if i have the total rows less than the per page number or less than the total count

`$page_number = 10` it should returns the query "`SELECT * FROM users ORDER BY id_user ASC LIMIT 80, 8`" even if i don't have enough records in my database table

### Anything else?

_No response_

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。