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 和 HTML
Oct 09 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
ThinkPHP分页实例
Oct 15 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php图片添加水印例子
Jul 20 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
php写app用的框架整理
Sep 29 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 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中的串行化变量和序列化对象
2006/09/05 PHP
多文件上载系统完整版
2006/10/09 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Linux CentOS7下安装python3 的方法
2018/01/21 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
python 字符串追加实例
2019/07/20 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python爬取抖音视频的实例分析
2021/01/19 Python
副处级干部考察材料
2014/05/17 职场文书
公司承诺书怎么写
2014/05/24 职场文书
工作散漫检讨书
2014/09/16 职场文书
世界环境日活动总结
2015/02/11 职场文书
Redis 限流器
2022/05/15 Redis