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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
php adodb连接不同数据库
Mar 19 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
基于PHP静态类的原罪详解
May 06 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
PHP借助phpmailer发送邮件
May 11 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 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 编程安全性小结
2010/01/08 PHP
php生成随机密码的几种方法
2011/01/17 PHP
PHP导入导出Excel代码
2015/07/07 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
Vue实现todolist删除功能
2018/06/26 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
Django的session中对于用户验证的支持
2015/07/23 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
python 动态调用函数实例解析
2019/10/21 Python
python numpy数组中的复制知识解析
2020/02/03 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
简单的命令查看安装的python版本号
2020/08/28 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
大学军训感想
2014/02/12 职场文书
汽车促销活动方案
2014/03/31 职场文书
工地宣传标语
2014/06/18 职场文书
工作求职信
2014/07/04 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers