Yii2实现让关联字段支持搜索功能的方法


Posted in PHP onAugust 10, 2016

本文实例讲述了Yii2实现让关联字段支持搜索功能的方法。分享给大家供大家参考,具体如下:

这里有两张表,表结构如下,companies_compay_id 为外键

yii2advanced.branches表:

branch_id:int(11)
companies_company_id:int(11)
branch_name:varchar(100)
branch_address:varchar(255)
branch_created_date:datetime
branch_status:enum('active','inactive')

yii2advanced.companies表:

company_id:int(11)
company_name:varchar(100)
company_email:varchar(100)
company_address:varchar(255)
logo:varchar(200)
company_start_date:datetime
company_create_date:datetime
company_status:enum('active','inactive')

在上面表中,可以用companiesCompany.company_name来获取公司名,不过这样是不支持搜索的。

想要支持搜索功能,需要在branches的index视图添加以下代码:

<?= GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    //添加的代码开始
    [
      'label'=>'公司名',
      'attribute'=>'companies_company_id',
      'value'=>'companiesCompany.company_name'
    ],
     //添加的代码结束
    'companiesCompany.company_name',
    // 'branch_id',
    // 'companies_company_id',
    'branch_name',
    'branch_address',
    'branch_created_date',
    // 'branch_status',
    ['class' => 'yii\grid\ActionColumn'],
  ],
]); ?>

然后修改SearchBranches.php

修改rules方法为:

public function rules()
{
  return [
    [['branch_id'], 'integer'],
    [['branch_name', 'branch_address', 'branch_created_date', 'branch_status','companies_company_id'], 'safe'],
  ];
}

修改search方法:

public function search($params)
{
  $query = Branches::find();
  $dataProvider = new ActiveDataProvider([
    'query' => $query,
  ]);
  $this->load($params);
  if (!$this->validate()) {
    // uncomment the following line if you do not want to any records when validation fails
    // $query->where('0=1');
    return $dataProvider;
  }
  // 添加下面这行代码
  $query->joinWith('companiesCompany');
  $query->andFilterWhere([
    'branch_id' => $this->branch_id,
  //  'companies_company_id' => $this->companies_company_id,
    'branch_created_date' => $this->branch_created_date,
  ]);
  $query->andFilterWhere(['like', 'branch_name', $this->branch_name])
    ->andFilterWhere(['like', 'branch_address', $this->branch_address])
    ->andFilterWhere(['like', 'branch_status', $this->branch_status])
     // 添加下面这行代码
    ->andFilterWhere(['like', 'companies.company_name', $this->companies_company_id]);
  return $dataProvider;

刷新页面即可看到

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
php字符串分割函数用法实例
Mar 17 PHP
php 如何获取文件的后缀名
Jun 05 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 #PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 #PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 #PHP
教你在header中隐藏php的版本信息
Aug 10 #PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 #PHP
PHP身份证校验码计算方法
Aug 10 #PHP
PHP5.4起内置web服务器使用方法
Aug 09 #PHP
You might like
PHP函数积累总结
2019/03/19 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
Python 查看文件的编码格式方法
2017/12/21 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python 求定积分和不定积分示例
2019/11/20 Python
python实现指定ip端口扫描方式
2019/12/17 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
keras 多gpu并行运行案例
2020/06/10 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
幼儿园教师岗位职责
2014/03/17 职场文书
实验室的标语
2014/06/20 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
捐款感谢信
2015/01/20 职场文书
台风停课通知
2015/04/24 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android