2017-12-07 15:11:45 1809次浏览 2条回答 2 悬赏 20 金钱
[
                'attribute'=>'address.address',
                'label'=>'地址',
                'value'=>'address.address',
                'sortLinkOptions'=> (new yii\data\Sort())->link('address.address'),//这里怎么写

            ],

上面这里address.address前面这个是model名, 后面这个address是属性名

如上, 这里的link改怎么写, 我按上面的写法, 会提示没有“address.address”这个属性。

补充于 2017-12-08 10:30
    $sort = $dataProvider->getSort();
    $sort->attributes['address.address'] = [
        'asc'=>['t_address.address' => SORT_ASC],
        'desc'=>['t_address.address' => SORT_DESC],
    ];
    $dataProvider->setSort($sort);

按照这种方法修改!

最佳答案

  • 菜鸟鼻涕 发布于 2017-12-08 09:16 举报

    给个例子如下:

        $dataProvider = new ActiveDataProvider([
            'query' => Report::find()->joinWith(['member']),
        ]);
        $dataProvider->setSort([
            'attributes' => [
                
                'title' => [
                    'asc' => ['title' => SORT_ASC],
                    'desc' => ['title' => SORT_DESC],
                    //'label' => '反馈会员',
                ],
                'create_time' => [
                    'asc' => ['create_time' => SORT_ASC],
                    'desc' => ['create_time' => SORT_DESC],
                ],
                'status' => [
                    'asc' => ['status' => SORT_ASC],
                    'desc' => ['status' => SORT_DESC],
                ],
                'backMember' => [
                    'asc' => ['ld_member.username' => SORT_ASC],
                    'desc' => ['ld_member.username' => SORT_DESC],
                ],
            ],
        ]);      
    

    这个backMember是member表的,这里是在Report模型里添加个属性就可以多关联到的字段进行排序了。希望这个例子能够帮助到你

    3 条回复
    回复于 2017-12-08 09:17 回复

    漏字了,在Report模型添加属性backMember这个属性

    回复于 2017-12-08 10:29 回复

    这种可以达到效果, 但是像默认的title这些生成以后本来就是默认带排序的, 用这种方法,就必须把所有字段重写一遍。
    我是按照下面的方法修改了下

        $sort = $dataProvider->getSort();
        $sort->attributes['address.address'] = [
            'asc'=>['t_address.address' => SORT_ASC],
            'desc'=>['t_address.address' => SORT_DESC],
        ];
        $dataProvider->setSort($sort);
    
    回复于 2017-12-08 11:01 回复

    嗯,你的方法很好

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
秀小川
主管

秀小川

注册时间:2017-08-16
最后登录:2022-05-23
在线时长:20小时47分
  • 粉丝1
  • 金钱455
  • 威望0
  • 积分655

热门问题