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字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
微信支付扫码支付php版
Jul 22 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 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来实现网络服务
2009/09/15 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
模拟select的代码
2011/10/19 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
详解Python中的strftime()方法的使用
2015/05/22 Python
Python文件去除注释的方法
2015/05/25 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
详解Django admin高级用法
2019/11/06 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python3.7添加dlib模块的方法
2020/07/01 Python
python 线程的五个状态
2020/09/22 Python
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
工作失职检讨书范文
2014/01/16 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
学校捐书活动总结
2015/05/08 职场文书
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers