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&amp;java(二)
Oct 09 PHP
杏林同学录(二)
Oct 09 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
PHP文件操作方法汇总
Jul 01 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
php实现网页端验证码功能
Jul 11 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
socket + select 完成伪并发操作的实例
2017/08/15 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
社会实践自我鉴定
2013/11/07 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
便利店的创业计划书
2014/01/15 职场文书
执行总经理岗位职责
2014/02/03 职场文书
道德之星事迹材料
2014/05/03 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
大国崛起观后感
2015/06/02 职场文书
任长霞观后感
2015/06/16 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
导游词之凤凰古城
2019/10/22 职场文书
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers