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

