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和MySql来与ODBC数据连接
Oct 09 PHP
mysql建立外键
Nov 25 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
php实现搜索类封装示例
Mar 31 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 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
简单的页面缓冲技术
2006/10/09 PHP
解析php入库和出库
2013/06/25 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Django自定义分页效果
2017/06/27 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
党员公开承诺书
2014/03/25 职场文书
产品质量承诺书范文
2014/03/27 职场文书
放飞理想演讲稿
2014/09/09 职场文书
法人授权委托书
2014/09/16 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书