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 相关文章推荐
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
PHP 中关于ord($str)>0x80的详细说明
Sep 23 PHP
php的hash算法介绍
Feb 13 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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中Session的概念
2006/10/09 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP数组相关函数汇总
2015/03/24 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
js图片轮播插件的封装
2017/07/21 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python 输出所有大小写字母的方法
2019/01/02 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python实现元素等待代码实例
2019/11/11 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
keras输出预测值和真实值方式
2020/06/27 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
自考毕业生自我鉴定
2013/11/04 职场文书
财务会计自荐信范文
2014/02/21 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
nginx共享内存的机制详解
2022/03/21 Servers
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL