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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
PHP编程函数安全篇
Jan 08 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
YII2 全局异常处理深入讲解
Mar 24 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
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
用python找出那些被“标记”的照片
2017/04/20 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
python绘制地震散点图
2019/06/18 Python
python中while和for的区别总结
2019/06/28 Python
python 实现视频 图像帧提取
2019/12/10 Python
python画环形图的方法
2020/03/25 Python
pyspark 随机森林的实现
2020/04/24 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
建筑工地标语
2014/06/18 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
2014年预算员工作总结
2014/12/05 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫