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 团购折扣计算公式
Nov 24 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
php实现的农历算法实例
Aug 11 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 PHP
laravel 解决crontab不执行的问题
Oct 22 PHP
laravel 执行迁移回滚示例
Oct 23 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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中使用Oracle数据库(1)
2006/10/09 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
React组件refs的使用详解
2018/02/09 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python中装饰器的一个妙用
2015/02/08 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
django form和field具体方法和属性说明
2020/07/09 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
竞选宣传委员演讲稿
2014/05/24 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
2014年文秘工作总结
2014/11/25 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
齐云山导游词
2015/02/06 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python
python_tkinter事件类型详情
2022/03/20 Python
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技