2017-12-13 17:39:53 2082次浏览 6条回答 0 悬赏 20 金钱

在search模型中用了(new Query())来查询!如果想要在视图GridView::widget中使用自带的列排序的话便要在search模型中的ActiveDataProvider上加sort来设置!其代码如下:
$dataProvider = new ActiveDataProvider([

        'query' => $query,
        'sort' => [
            //设置需要排序的列
            'attributes' => [
                'chapter_name','section_name','activity_name','created_at','expire_time'
            ],
            //设置默认排序
            'defaultOrder' => ["created_at" => SORT_DESC],
        ]
    ]);

然后我想请问可不可以设置优先排序的??比如在‘activity_name’字段中我加了一个标识!如果有标识的话会排在前头,没有的话就排在后面!

补充于 2017-12-13 17:42

当标识都为空的时候就按照创建时间默认排序!

  • 回答于 2017-12-14 08:40 举报
    case when then else end
    
  • 回答于 2017-12-14 10:15 举报

    QQ截图20171214101531.png

  • 回答于 2017-12-14 11:42 举报

    在sort里面写,楼上有贴图了

  • 回答于 2017-12-14 11:57 举报

    我可以把你的优先排序理解为置顶吗?
    关于置顶:
    1.png

    表中增加一个top_time 置顶时间
    $dataProvider 执行query的时候就优先排序置顶时间,再排序创建时间就好。

    大概的道理就是酱紫。具体怎么使用你可以参照这个思路来

  • 回答于 2017-12-14 12:53 举报

    增加一个排序条件就能实现

  • 回答于 2017-12-15 10:15 举报

    额,没碰到过类似的需求场景,所以没深入了解过。
    建议研究下 yii\data\Sort 的源码。
    类文件中有一些基础的使用说明,不过可能跟你的实际需求有点差异,可以尝试下 相关属性是否支持 匿名函数 。

    如果成功了,欢迎分享 :)

您需要登录后才可以回答。登录 | 立即注册
不刷牙的北极熊
副董事长

不刷牙的北极熊 广州

注册时间:2017-07-18
最后登录:2024-02-20
在线时长:651小时44分
  • 粉丝10
  • 金钱37495
  • 威望40
  • 积分44405

热门问题