mydzoo
测试这边是能排序的,你贴出你的
addOrderBy()
看下//PostController $query = Post::find()->active()->sort($sort); $dataProvider = new ActiveDataProvider([ 'query' => $query->with(['creator', 'updater'])->where(['forum_id' => $id]), ]); //PostQuery /** * 活跃帖子 * @return $this */ public function active() { return $this->andWhere(['status' => Post::STATUS_ACTIVE]); } /** * 根据sort参数进行排序 * @param $sort * @return $this */ public function sort($sort) { switch ($sort) { case 'recent' : return $this->recent(); break; case 'latest' : return $this->latest(); break; case 'rating': return $this->rating(); break; default: return $this->latest(); } }
PostQuery extends ActiveQuery
因此具备了addOrderBy()
方法。访问参数&sort=rating
时走的是$this->rating()
方法。这里都对,唯独debug看到它生成的sql代码如上面问题补充所示。- mydzoo 发表了说说http://www.yiichina.com/question/3592 谁能帮忙看下这个问题,是BUG还是什么?
- mydzoo 回答了问题 double字段类型排序问题有BUG吗?
上述生成的sql如下:
SELECT * FROM `post` WHERE `forum_id`='10000' ORDER BY `rating` LIMIT 20
经过测试,将
rating
改为其它int
类型字段,比如created_at
,可以正常排序。唯独double
类型字段不可以。 - mydzoo 2018-05-30 已签到连续签到1天,获得了5个金钱