温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Yii2-GridView中如何实现让关联字段带搜索和排序功能

发布时间:2021-07-10 10:10:01 来源:亿速云 阅读:154 作者:小新 栏目:开发技术

这篇文章主要介绍Yii2-GridView中如何实现让关联字段带搜索和排序功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

情境要求:

要在订单(Order)视图的gridview中显示出客户(Customer)姓名,并使其具有与其它字段相同的排序和搜索功能。

数据库结构

订单表order含有字段customer_id 与 客户表customer的id字段关联

首先确保在Order Model中包含以下代码:

public function getCustomer() {   return $this->hasOne(Customer::className(), ['id' => 'customer_id']); }

用gii会自动生成此代码;

第一步:

在OrderSearch添加一个$customer_name变量

class OrderSearch extends Order {   public $customer_name; //<=====就是加在这里 }

第二步:

修改OrderSearch中的search函数

public function search($params) {   $query = Order::find();   $query->joinWith(['customer']);<=====加入这句   $dataProvider = new ActiveDataProvider([     'query' => $query,   ]);      $dataProvider->setSort([     'attributes' => [       /* 其它字段不要动 */         /* 下面这段是加入的 */       /*=============*/       'customer_name' => [         'asc' => ['customer.customer_name' => SORT_ASC],         'desc' => ['customer.customer_name' => SORT_DESC],         'label' => 'Customer Name'       ],       /*=============*/     ]   ]);    if (!($this->load($params) && $this->validate())) {     return $dataProvider;   }   $query->andFilterWhere([     'id' => $this->id,     'user_id' => $this->user_id,     'customer_id' => $this->customer_id,     'order_time' => $this->order_time,     'pay_time' => $this->pay_time,   ]);   $query->andFilterWhere(['like', 'status', $this->status]);    $query->andFilterWhere(['like', 'customer.customer_name', $this->customer_name]) ;//<=====加入这句      return $dataProvider; }

第三步:

修改order/index视图的gridview

<?= GridView::widget([   'dataProvider' => $dataProvider,   'filterModel' => $searchModel,   'columns' => [     ['class' => 'yii\grid\SerialColumn'],     'id',     'customer_id',      'status',     ['label'=>'客户', 'attribute' => 'customer_name', 'value' => 'customer.customer_name' ],//<=====加入这句     ['class' => 'yii\grid\ActionColumn'],   ], ]); ?>

以上是“Yii2-GridView中如何实现让关联字段带搜索和排序功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI