laobai 2017-02-12 10:38:11 9365次浏览 2条评论 0 1 0

在数据库中有三张表,branch(分店),branch_product(店铺与其产品的关联关系表),product(产品信息表)。

1,在BranchProductSearch模型(扩展自BranchProduct)中添加一个新的属性

public $productName

2,在BranchProductSearch模型中添加一条新的rule

[['productName'],'safe'],

3,在BranchProductSearch模型中的search中,$this->load($params);之前添加排序

$dataProvider->sort->attributes['productName']=
            [
                 'asc' => ['product.name' => SORT_ASC],
                'desc' => ['product.name' => SORT_DESC],
            ];

4,在BranchProductSearch模型中的search中添加搜索过滤(filter)

$query->andFilterWhere(['like','product.name',$this->productName]);
5,最后一步在相应的视图里面添加

GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'id',
            'branch_id',
            'stock',
            [
                'class'=>DataColumn::className(),
                'attribute'=>'productName',
                'label'=>'产品名',
                'value'=>'product.name',
            ],
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]);

扩展:其中value值可以为一个匿名函数其形态定义如(参见yii\grid\DataColumn::value)

function ($model, $key, $index, $column){
    return $model['product']['name'];
}

参见http://stackoverflow.com/questions/36175084/yii2-gridview-relation-data-search-for-all-column

觉得很赞
您需要登录后才可以评论。登录 | 立即注册