与
ESC
输入关键词搜索文章

Yii2.0给GridView增加关联字段排序和搜索功能

全文约 271 字预计阅读 1 分钟
yii2.0在使用了with关联了留言表(Comment)和会员表(Member),并且在留言列表中显示会员昵称。 在Comment留言表模型添加如下方法
public function getMember() {
   return $this->hasOne(Member::className(), ['id' => 'member_id']);
}
在CommentSearch模型添加一个属性
public $nickname;
并且在该模型中rules方法设置nickname为safe
public function rules()
{
    return [
        [['nickname', 'safe'],
    ];
}
修改Commentearch模型的search方法
$query = Comment::find();
if (is_array($this->relations)) {
    $query->joinWith(['member']);//关联会员表
}
然后添加排序,在
$dataProvider = new ActiveDataProvider([
    'query' => $query,
]);
后面添加如下代码
$sort = $dataProvider->getSort(); // 获取yii自动生成的排序规则
$sort->attributes['nickname'] = [ // 添加用户名的排序规则
    'asc' => ['member.nickname' => SORT_ASC],
    'desc' => ['member.nickname' => SORT_DESC],
    'label' => '昵称'
];
$dataProvider->setSort($sort); // 设置排序规则
接下来在return上面添加搜索功能
$query->andFilterWhere(['like', 'member.nickname', $this->nickname]);
return $dataProvider;
修改视图模板 Comment/index 内的 GridView::widget()参数,给 columns 数组添加以下成员:
[
    'attribute' => 'nickname',
    'label' => '昵称',
    'value' => 'member.nickname',
    'headerOptions' => ['width' => '100'],
    //'filter'=>Html::activeTextInput($searchModel, 'nickname', ['class'=>'form-control']), // 生成一个搜索框
],
全部都保存,然后刷新浏览器看看。
Yii2.0给GridView增加关联字段排序和搜索功能
分享

发表评论

评论 0 条

暂无评论,来说点什么吧。