mydzoo

mydzoo

这家伙有点懒,还没写个性签名!

  • 财富值2075
  • 威望值10
  • 总积分2705

个人信息

  • 回复了 的回答

    public static function find() { return new PostQuery(get_called_class()); }
    这样写不合适的。用YII::createObject()去实例化。

    这二者有什么区别吗?

  • 回复了 的回答

    测试这边是能排序的,你贴出你的 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代码如上面问题补充所示。

  • 发表了说说
    http://www.yiichina.com/question/3592 谁能帮忙看下这个问题,是BUG还是什么?
  • 上述生成的sql如下:

    SELECT * FROM `post` WHERE `forum_id`='10000' ORDER BY `rating` LIMIT 20
    

    经过测试,将rating改为其它int类型字段,比如created_at,可以正常排序。唯独double类型字段不可以。

  • 提出了问题
    double字段类型排序问题有BUG吗?
  • 2018-05-30 已签到
    连续签到1天,获得了5个金钱
  • 回复了 的说说
    呦呵,几天不见,界面优化了不少
    bootstrap4?
  • 赞了说说
    可以分享一下我的签到表设计吗?
  • 回复了 的说说
    可以分享一下我的签到表设计吗?
    顺带分享下提醒表和思路
总监 等级规则
2705/5000
资料完整度
10/100
用户活跃度
0/100

Ta的关注

2

Ta的粉丝

4

Ta的访客

30