yii框架中搜索分页Query写法

控制层

use frontend\models\StudUser;
use yii\data\Pagination;
use yii\db\Query;
/**
 * 查询
 *

 */
public function actionSearch()
{

    //接值
    $where=Yii::$app->request->get();

    //实例化query
    $query=new Query();

    $query->from('stud_user');

    //判断
    if(isset($where['sex'])&&$where['sex']!=''){

        //判断
        if($where['sex']==''){
           $query->andWhere(['stud_sex'=>0]);
        }
        if($where['sex']==''){
            $query->andWhere(['stud_sex'=>1]);
        }

    }else{

  $where['sex']='';

}


    //年龄
    if(isset($where['age'])&&$where['age']!=''){
          $query->andWhere(['>','stud_age',$where['age']]);

    }else{
$where['age']='';

}


    //分页
    $pagination = new Pagination(['totalCount' => $query->count()]);

    //条数
    $pagination->setPageSize('3');

    //条件
    $query->offset($pagination->offset)->limit($pagination->limit);

    //执行
    $userInfo=$query->all();

    //print_r($userInfo);die;

    return $this->render('search',['userInfo'=>$userInfo,'page'=>$pagination,'where'=>$where]);
}



模型层
namespace frontend\models;

use Yii;
use yii\db\ActiveRecord;

class StudUser extends ActiveRecord
{

    /**
     * 声明表名
     *
     
     */
     public static function tableName()
     {
         return '{{%stud_user}}';
     }


    /**
     * 验证规则
     *
     */
    public function rules()
    {
        return [
            ['stud_age','integer'],
        ];
    }

}


 
视图层
use yii\widgets\ActiveForm;
use yii\helpers\Url;
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>

$form=ActiveForm::begin([
    'action'=>Url::toRoute(['admin/search']),
    'method'=>'get',
]);

echo '性别'," ",Html::input('text','sex',$where['sex']);

echo '年龄'," ",Html::input('text','age',$where['age']);

echo Html::submitButton('提交');



ActiveForm::end();
?>

<table class="table">
<tr>
    <td>序号td>
    <td>姓名td>
    <td>年龄td>
tr>
    ($userInfo as $val):?>
        <tr>
            <td>$val['stud_id']?>td>
            <td>$val['stud_name']?>td>
            <td>$val['stud_age']?>td>
        tr>
    ;?>
table>

echo LinkPager::widget([
    'pagination' => $page,
    'nextPageLabel'=>'下一页'
  ]) ; ?>



分页的样式在

LinkPager.php中

你可能感兴趣的:(yii框架)