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图片上传程序
Mar 27 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
深入PHP运行环境配置的详解
Jun 04 PHP
PHP动态柱状图实现方法
Mar 30 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP区块查询实现方法分析
May 12 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 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
星际玩家的三大定律
2020/03/04 星际争霸
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
vuex的简单使用教程
2018/02/02 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
Python多线程实例教程
2014/09/06 Python
python文件操作的简单方法总结
2019/11/07 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
几个MySql的面试题
2013/04/22 面试题
2014大学生全国两会学习心得体会
2014/03/13 职场文书
师德师风建设方案
2014/05/08 职场文书
政风行风评议整改方案
2014/09/15 职场文书
财会专业大学生求职信
2014/09/26 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
会议通知
2015/04/15 职场文书
毕业生入职感言
2015/07/31 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
详解Python牛顿插值法
2021/05/11 Python
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL