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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
php cookie工作原理与实例详解
Jul 18 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 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实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
深入理解Django的中间件middleware
2018/03/14 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
家长给幼儿园的表扬信
2014/01/09 职场文书
目标责任书范文
2014/04/14 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
食品安全责任书范本
2015/05/09 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
毕业典礼主持词
2015/06/29 职场文书
2015年暑假生活总结
2015/07/13 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python