yii 中使用排序

使用原理类似于pagination


            $sort = new Sort([
                'attributes' => [
                    'age' => [
                        'asc' => ['age' => SORT_ASC],
                        'desc' => ['age' => SORT_DESC],
                        'default' => SORT_ASC,
                        'label' => '年龄'
                        /*'label' => Inflector::camel2words('age'),*/
                    ],
                    'name'=>[
                        'asc' => ['name' => SORT_ASC],
                        'desc' => ['name' => SORT_DESC],
                        'default' => SORT_ASC,
                        'label' => '姓名'
                    ],
                ],
                //默认按id排序,现在改成按name排序
                /*'defaultOrder' => ['name' => SORT_ASC],*/
            ]);
                //创建name和age排序链接, 类似LinkPager::widget(['pagination' => $pages]);
                //生成<a href="/index.php?r=site%2Flogin&amp;page=1&amp;sort=name" data-sort="name">姓名</a>
            $data['name'] = $sort->link('name');
            $data['age'] = $sort->link('age');

            $data['person']  = Person::find() -> andWhere(['deleted' => '-1']);;
            //分页
            $data['pagination'] = new Pagination([
                'defaultPageSize' => 4,
          //count()是Query类中的方法
                'totalCount' => $data['person']->count(),
            ]);

            //***$data['person']必须是一个Query对象,才可以调用orderBy(),offset(),limit()等方法
            //$sort生成数组['field_name' => ORDER_DESC]填充orderby方法
            $data['person'] = $data['person']->orderBy($sort->orders)
                ->offset($data['pagination']->offset)
                ->limit($data['pagination']->limit)
                ->all();

            return $this->render("show", $data);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值