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代码优化及php相关问题总结
Oct 09 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
PHP file_get_contents设置超时处理方法
Sep 30 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
Laravel实现ORM带条件搜索分页
Oct 24 PHP
Yii框架安装简明教程
May 15 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
第八节--访问方式
2006/11/16 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python妙用之编码的转换详解
2017/04/21 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
Python笔记之观察者模式
2019/11/20 Python
python 爬取疫情数据的源码
2020/02/09 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
生物科学专业职业规划书范文
2014/02/11 职场文书
投标担保书范文
2014/04/02 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书