Yii2实现同时搜索多个字段的方法


Posted in PHP onAugust 10, 2016

本文实例讲述了Yii2实现同时搜索多个字段的方法。分享给大家供大家参考,具体如下:

Yii2中搜索字段是用的andFilterWhere这个方法,用它可以搜索一个一段。

如果是搜索多个字段的话 ,比如搜索文章标题和文章内容是是否包含需要搜索的关键词,因为他们两个的关系是or,所以就要用到orFilterWhere这个方法

下面就是全部的代码

public function actionIndex()
{
  $key =Yii::$app->request->post("key");
  $query = Post::find()->joinWith('cate');
  $post = $query->orderBy(['post.id' => SORT_DESC])->asArray()->where(['post.status' => 1]);
  if($key){
    $post->andFilterWhere(['like', 'post.title', $key])
      ->orFilterWhere(['like', 'post.content', $key]);
  }
  $pages = new Pagination([
    'totalCount' => $post->count(),
    'defaultPageSize' => 10
  ]);
  $model = $post->offset($pages->offset)->limit($pages->limit)->all();
  return $this->render('index', [
    'model' => $model,
    'pages' => $pages,
  ]);
}

可以看到sql语句如下:

select count(*) from `post` left join `category` on `post`.`cate_id`=`category`.`id` where ((`post`.`status`=1) and (`post`.`title` like '%key%')) or (`post`.`content` like '%key%') order by `post`.`id` desc

select `post`.* from `post` left join `category` on `post`.`cate_id`=`category`.`id` where ((`post`.`status`=1) and (`post`.`title` like '%key%')) or (`post`.`content` like '%key%') order by `post`.`id` desc limit 10

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
十天学会php之第一天
Oct 09 PHP
php框架Phpbean说明
Jan 10 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
如何判断php数组的维度
Jun 10 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
php json相关函数用法示例
Mar 28 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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
PHP Filter过滤器全面解析
Aug 09 #PHP
You might like
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Python内置类型性能分析过程实例
2020/01/29 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
如何在python中执行另一个py文件
2020/04/30 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
花卉与景观设计系大学生求职信
2013/10/01 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
学校百日安全活动总结
2015/05/07 职场文书
户外拓展训练感想
2015/08/07 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android