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 调用远程url的六种方法小结
Nov 02 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
十大使用PHP框架的理由
Sep 26 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 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
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
cookie的secure属性详解
2015/04/08 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
Python优先队列实现方法示例
2017/09/21 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Django的CVB实例详解
2020/02/10 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
Python matplotlib实时画图案例
2020/04/23 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
介绍一下Java的安全机制
2012/06/28 面试题
Java中实现多态的机制
2015/08/09 面试题
工商管理专业应届生求职信
2013/11/04 职场文书
农村党支部先进事迹
2014/01/14 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
交通安全月活动总结
2015/05/08 职场文书
英语教学课后反思
2016/02/15 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL