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层
<?php use 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层的分页
<?php echo 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]); }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: php查询mysql大量数据造成内存不足的解决方法
- 下一篇: YII2原生SQL分页支持排序搜索