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 相关文章推荐
生成缩略图
Oct 09 PHP
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
PHP ajax 分页类代码
Nov 13 PHP
php header功能的使用
Oct 28 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
php抽象类用法实例分析
2015/07/07 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
Javascript学习笔记 delete运算符
2011/09/13 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
python实现绘制树枝简单示例
2014/07/24 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
应届毕业生就业自荐信
2013/10/26 职场文书
物流专业大学的自我评价
2014/01/11 职场文书
部队党性分析材料
2014/02/16 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
工伤事故证明
2014/10/20 职场文书
保姆聘用合同
2015/09/21 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android