本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能。分享给大家供大家参考,具体如下:
方法一
在控制器中
public function actionShow(){ $where["title"]=Yii::$app->request->get("title"); $where["content"]=Yii::$app->request->get("content"); $query=new Query(); $query->from("votes"); // votes 是表名 if(!empty($where["title"])||!empty($where["content"])){ $query->andFilterWhere( ["like","title",$where["title"]] )->orFilterWhere( ["like","content",$where["content"]] ); } $users=$query->from("votes")->all(); $pages = new Pagination(["totalCount" =>$query->count(),"pageSize"=>"2"]); $users = $query->offset($pages->offset)->limit($pages->limit)->all(); return $this->render("show",["data"=>$users,"where"=>$where,"pages"=>$pages]);}
在v层
<?phpuse yiihelpersHtml;use yiiwidgetsActiveForm;use yiihelpersUrl;use yiiwidgetsLinkPager;?>
<?php$form=ActiveForm::begin([ "action"=>Url::toRoute(["show"]), "method"=>"get",]);echo "姓名"," ",Html::input("text","title");echo "简介"," ",Html::input("text","content");echo Html::submitButton("提交");ActiveForm::end();echo "<br/>";echo "<br/>";?>
显示在v层的分页
<?phpecho LinkPager::widget([ "pagination"=>$pages, "nextPageLabel"=>"下一页", "firstPageLabel"=>"首页"])?>
方法二(不带分页 是另外一种方法)
public function actionShow(){ $titles=Yii::$app->request->post("title"); $content=Yii::$app->request->post("content"); $where=1; if($titles!=""){ $where.=" and title like "%$titles%""; } if($content!=""){ $where.=" and content like "%$content%""; } $sql="select * from votes where $where"; $users=Yii::$app->db->createCommand($sql)->query(); return $this->render("show",["data"=>$users]);}
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。