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 相关文章推荐
一个SQL管理员的web接口
Oct 09 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 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 之入门篇
2006/12/04 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
python回调函数的使用方法
2014/01/23 Python
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python运算符重载用法实例分析
2015/06/01 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
2014年高三毕业生自我评价
2014/01/11 职场文书
个人委托书范本
2014/04/02 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
四风查摆剖析材料
2014/10/10 职场文书
2014年公司工作总结
2014/11/22 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript