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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
php中{}大括号是什么意思
Dec 01 PHP
php实现天干地支计算器示例
Mar 14 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
Yii学习总结之安装配置
Feb 22 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
Windows下php+mysql5.7配置教程
May 16 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
提问的智慧(2)
2006/10/09 PHP
一个简单计数器的源代码
2006/10/09 PHP
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
js 通用javascript函数库整理
2011/08/14 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
JS常用函数使用指南
2014/11/23 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
nodeJS微信分享
2017/12/20 NodeJs
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
vue实现分页加载效果
2019/12/24 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
公司清洁工岗位职责
2013/12/14 职场文书
会议开场欢迎词
2014/01/15 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
校园环保标语
2014/06/13 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书