Cakephp-相关表

时间:2018-09-10 06:52:57

标签: php mysql cakephp pagination cakephp-3.x

在查看方法中,我从数据库中下载了所有与Courses表相关的学生,并添加了分页。

$this->paginate = [
        'order' => ['id' => 'desc'],
        'conditions' => ['Students.course_id =' => $id]
    ];
    $students = $this->paginate($this->Students);
    $this->set(compact('students'));

在视图(view.ctp)中,我通过foreach显示了整个表。我希望在第一栏中显示订单号。我尝试将$ key与foreach一起使用,但是如果转到另一端,数字将为零,并且我不能使用ID。

<?php foreach ($students as $key => $student): ?>
        <tr>
            <td><?= h($key) ?></td>

想要这样的东西:

第1页

|------------|-----------|---------------|
|      LP    |     ID    |    NAME       |
|------------|-----------|---------------|
|      1     |     5437  |    Mark       |
|------------|-----------|---------------|
|      2     |     67    |    John       |
|------------|-----------|---------------|
|      3     |     12    |    Lisa       |
|------------|-----------|---------------|
|      4     |     63    |    John       |
|------------|-----------|---------------|
|      5     |     657   |    Lisa       |
|------------|-----------|---------------|

第2页

|------------|-----------|---------------|
|      LP    |     ID    |    NAME       |
|------------|-----------|---------------|
|      6     |    5431   |    Michael    |
|------------|-----------|---------------|
|      7     |   36554   |    Lara       |
|------------|-----------|---------------|
|      8     |     99    |    Anne       |
|------------|-----------|---------------|
|      9     |     76    |    Luke       |
|------------|-----------|---------------|
|      10    |     351   |    Chris      |
|------------|-----------|---------------|

2 个答案:

答案 0 :(得分:0)

在这种情况下,

$key只是数组元素的索引,因此其值在每一页上都相同。如果需要输出与记录相关的ID,则必须使用数据库中的字段。

答案 1 :(得分:0)

您的问题是因为$ key是数组索引,而不是记录号。每次生成分页页面时,数组键都从0(零)开始。要获取记录号,必须用($ key + 1)+($ limit *($ page-1))更改h($ key)

** 更新 **

$ page =您要显示的分页页数

$ limit =每个分页页面的记录数。