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']), // 生成一个搜索框 ],
全部都保存,然后刷新浏览器看看。