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 相关文章推荐
UCenter 批量添加用户的php代码
Jul 17 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 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
网站防止被刷票的一些思路与方法
2015/01/08 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python虚拟环境迁移方法
2019/01/03 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
建筑工地标语
2014/06/18 职场文书
学习党代会心得体会
2014/09/05 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
写景作文评语集锦
2014/12/25 职场文书
委托公证书样本
2015/01/23 职场文书
撤诉申请书法院范本
2015/05/18 职场文书