牛骨文教育服务平台(让学习变的简单)
博文笔记

yii 中使用排序

创建时间:2018-04-03 投稿人: 浏览次数:146

使用原理类似于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);
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。