double字段类型排序问题有BUG吗? [ 2.0 版本 ]
数据表字段rating
为double
类型,
//Post模型重写find方法
public static function find()
{
return new PostQuery(get_called_class());
}
//PostQuery中定义
public function rating()
{
return $this->addOrderBy(['rating' => SORT_DESC]);
}
在调用find()->rating()
方法时,这个一直无法倒叙排列。谁知道什么原因吗?
mydzoo 补充于 2018-05-30 17:09
上述生成的sql如下:
SELECT * FROM `post` WHERE `forum_id`='10000' ORDER BY `rating` LIMIT 20
经过测试,将rating
改为其它int
类型字段,比如created_at
,可以正常排序。唯独double
类型字段不可以。
共 2 个回答
-
测试这边是能排序的,你贴出你的
addOrderBy()
看下共 1 条回复//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
注册时间:2017-01-05
最后登录:2022-03-29
在线时长:53小时40分
最后登录:2022-03-29
在线时长:53小时40分
- 粉丝4
- 金钱2075
- 威望10
- 积分2705