Yii2实现同时搜索多个字段的方法
本文实例讲述了Yii2实现同时搜索多个字段的方法。分享给大家供大家参考,具体如下:
Yii2中搜索字段是用的andFilterWhere这个方法,用它可以搜索一个一段。
如果是搜索多个字段的话,比如搜索文章标题和文章内容是是否包含需要搜索的关键词,因为他们两个的关系是or,所以就要用到orFilterWhere这个方法
下面就是全部的代码
publicfunctionactionIndex() { $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=newPagination([ 'totalCount'=>$post->count(), 'defaultPageSize'=>10 ]); $model=$post->offset($pages->offset)->limit($pages->limit)->all(); return$this->render('index',[ 'model'=>$model, 'pages'=>$pages, ]); }
可以看到sql语句如下:
selectcount(*)from`post`leftjoin`category`on`post`.`cate_id`=`category`.`id`where((`post`.`status`=1)and(`post`.`title`like'%key%'))or(`post`.`content`like'%key%')orderby`post`.`id`desc select`post`.*from`post`leftjoin`category`on`post`.`cate_id`=`category`.`id`where((`post`.`status`=1)and(`post`.`title`like'%key%'))or(`post`.`content`like'%key%')orderby`post`.`id`desclimit10
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。