You don't have javascript enabled. Good luck! :(

欢迎页

Welcome to Ganace's Blog


欢迎您来到Ganace 的个人博客。

在茫茫互联网的海洋里能够遇见,实在是一份不小的幸运。

诚挚地向您问候一声:您好,朋友!

这里是属于Ganace个人的隐秘小空间,记录了工作学习中遇到的知识点与灵感,以及生活中的碎碎念与吐槽突如其来的中二病尬尬的文艺时间锻炼腹肌的时刻惊喜的小发现等等。

想要在自己的平淡无奇的人生长河中留下些什么,

或者只是为了拯救老人家岌岌可危的记忆力,

仅此而已。

来到此地,分享与你。

也期待与您的再次相遇!

Share with Me


有任何的分享或者建议与吐槽,都可以Email我:ganace@foxmail.com

欢迎您的来信!

【PHP|Yii2|SQL数据提供者】关于SQL数据提供者(SqlDataProvider)的基本使用(一)

  Sep 27, 2017     Ganace     Back-end-Development UPDATE: Sep 28, 2017

PHP
Yii2

这里是一篇Ganace记录的关于SQL数据提供者(SqlDataProvider)的基本使用的文章。

Models


基本使用

  • 在首页加后缀?r=gii,使用gii生成模型类。
  • 打开生成的含有search名字的文件头部添加use yii\data\SqlDataProvider;如下:
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use yii\data\SqlDataProvider;
//...

-在生成的含有search名字的模型类中,寻找search方法,没有则自己添加在search方法中添加如下代码:

$sql = 'SELECT * FROM `post` WHERE `date` LIKE '2017%''
$sql_count = 'SELECT COUNT(\*) `post` WHERE `date` LIKE '2017%'';
$params=[':one' => 1];
$count = Yii::$app->db->createCommand($sql_count)
    ->bindValues($params)
    ->queryScalar();
$dataProvider = new SqlDataProvider([
    'sql' => $sql,
    'params' => $params,
    'totalCount' => $count,
    'pagination' => [
        'pageSize' =>25,
    ],
    'sort' => [
        'attributes' => [
            'name',
            'title',
            'num',
            'date',
        ],
    ],
]);
return $dataProvider;

代码说明

  • 其中’totalCount’是分页属性,按照$count中查询出的当前页数据来只显示当前页数据;$sql_count是计算$sql查询出的结果的数据项总数,是个计数查询

  • 其中’pagination’是设置每页数据量的属性,”‘pageSize’ =>25”表示每页显示25条数据

  • 其中’sort’是排序属性,’attributes’中列出的字段名如’name’、’title’、’num’等都会在渲染页面具有排序功能


Controllers


基本使用

-在gii生成的控制器中寻找index动作,即名为actionIndex的方法,添加如下代码:

public function actionIndex()
{
    $searchModel = new XspaydetailSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

代码说明

  • 其中’$searchModel’是查询过滤的结果数据(查询模块)。

  • 其中’$dataProvider’是结果数据(数据模块)。

  • 其中

return $this->render('index', [
    'searchModel' => $searchModel,
    'dataProvider' => $dataProvider,
]);

是渲染页面,向index传递数据$searchModel与$dataProvider。


【Yii2|SQL数据提供者】关于SQL数据提供者(SqlDataProvider)的基本使用(二)

【Yii2|Yii2-Admin】关于(基于RBAC的权限管理扩展组件)Yii2-Admin的基本使用(一)