使用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 yii\helpers\Html; use yii\widgets\ActiveForm; use yii\helpers\Url; use yii\widgets\LinkPager; ?>
<?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]); }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。