$ this-> Paginator->排序不适用于cakephp 3中的数字

时间:2016-07-25 07:22:44

标签: php cakephp-3.x

enter image description here当我在cakephp 3中使用paginator sort时,它无法正常工作。它显示以下顺序

Sno
1
11
13
18
2
25
3
instead of 
Sno
1
2
3
11
13
18
25

我的观看页面代码是

           <th> <?= $this->Paginator->sort('Sno') ?></th>
            <th><?= $this->Paginator->sort('id','Order ID') ?></th>
            <th><?= $this->Paginator->sort('user_id','Cust ID') ?> </th>
            <th><?= $this->Paginator->sort('first_name','Cust Name') ?></th>
            <th><?= $this->Paginator->sort('created_date','Date') ?></th>
            <th><?= $this->Paginator->sort('order_qty','Order Qty') ?></th>

任何人都可以帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

行为完全正常,因为用于存储id的列类型是字符串而不是数字。订购字符串时,11

之前会发生2

我建议您更改架构并切换到数字ID。

但是如果由于某些原因你不能这样做,那么你可以创建一个计算字段来存储数值

在控制器中的查找调用中,您必须添加字段

->select(['my_id' => "CAST(REPLACE(id, 'CUS_', '') AS UNSIGNED)"])

并在视图中

<?= $this->Paginator->sort('my_id','Order ID') ?>

请记住将该字段添加到sortWhitelist

$this->paginate = [
        'sortWhitelist' => ['my_id']
];