PHP开发框架Yii Framework教程(28) Data Provider简介

这开始介绍Zii组件之前,先简要介绍一下Yii支持的数据源接口 IDataProvider,IDataProvider主要功能是为UI组件如 GridView,ListView等提供数据源,同时也支持数据的分页和排序。下图为Yii内置的三种数据源:

CActiveDataProvider  基于Active Record的数据源

CArraryDataProvider 基于数组的数据源

CSqlDataProvider      基于SQL查询的数据源

开发框架Yii Framework教程(28) Data Provider简介-yii2 dataprovider">

三种Data Provider的使用大同小异:

CActiveDataProvider 基于ActiveRecord, 它通过AR的 CActiveRecord::findAll方法读取数据库记录,并通过 criteria属性设置查询条件。

如:

$dataProvider=new 

CActiveDataProvider('Post', array(
    'criteria'=>array(
        'condition'=>'status=1',
        'order'=>'create_time DESC',
        'with'=>array('author'),
    ),
    'pagination'=>array(
        'pageSize'=>20,
    ),
));
// $dataProvider->getData() will return a list of Post objects

CArrayDataProvider 基于数组,其中属性 rawData设置原始数据,一般为数组或者DAO查询结果,如:

$rawData=Yii::app()->db->createCommand

('SELECT * FROM tbl_user')->queryAll();
// or using: $rawData=User::model()->findAll();
$dataProvider=new CArrayDataProvider($rawData, array(
    'id'=>'user',
    'sort'=>array(
        'attributes'=>array(
             'id', 'username', 'email',
        ),
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));
// $dataProvider->getData() will return a list of arrays.

CSqlDataProvider 基于SQL查询,通过设置 sql 语句来配置,比如:

$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tbl_user')-

>queryScalar();
$sql='SELECT * FROM tbl_user';
$dataProvider=new CSqlDataProvider($sql, array(
    'totalItemCount'=>$count,
    'sort'=>array(
        'attributes'=>array(
             'id', 'username', 'email',
        ),
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));
// $dataProvider->getData() will return a list of arrays.

关于DataProvider详细文档可以参见Yii文档:http://www.yiiframework.com/doc/api/1.1/CDataProvider

查看全套教程:http://www.bianceng.cn/webkf/PHP/201301/35265.htm

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, yii
, pagination
, array
, 数据源
, FindAll() 分页
, AD FindAll()分页
, 基于
, Yii联合查询
, yii2_gridview
, yii2_gridview搜索
, yii2_gridview操作
, CArrayDataProvider
CActiveDataProvider
yii2 dataprovider、yii dataprovider、yii dataprovider用法、yii2 sqldataprovider、yiiframework,以便于您获取更多的相关知识。

时间: 2025-01-20 14:11:29

PHP开发框架Yii Framework教程(28) Data Provider简介的相关文章

PHP开发框架Yii Framework教程(22) UI组件 Zii组件简介

前面介绍了Yii框架支持的部分UI组件,除了前面介绍的UI组件外,Yii框架还提供了Zii组件库,包括列表视图ListView,表 格视图GridView,此外还包括一些基于JQuery的UI组件,如AutoComplete,DataPicker, Button, Drag 和 Drop等,Zii组件主要 定义在包zii.* ,zii.widget.* 开发框架Yii Framework教程(22) UI组件 Zii组件简介-yii2 user组件"> 由于其中部分UI组件和数据源(Dat

PHP开发框架Yii Framework教程(34) Zii组件-AutoComplete示例

CJuiAutoComplete 在用户输入时可以根据用户输入的前几个字符自动提示用户可以输入的文字.它封装了 JUI autocomplete插件. 基本用法如下 <?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array( 'name'=>'city', 'source'=>$data, // additional javascript options for the autocomplete plugin 'op

PHP开发框架Yii Framework教程(17) UI 组件 TabView示例

CTabView 用来显示分页标签,使用TabView的基本方法是配置tabs属性,每个Tab可以配置如下属性 title:标签标 题. content: 标签显示内容. view: 标签显示View的名称,如果同时制定Content,则显示Content内容. url: 点击该 标签时页面重定向到指定URL. data: 当指定View属性时传给该View的属性数组. 本例显示三个标签页,分别使用不同 的标签内容: <center class="form"> <?p

PHP开发框架Yii Framework教程(46) Zii组件-Sortable示例

CJuiSortable显示一个列表,列表中的列表项可以通过拖放重新调整顺序,它封装了 JUI Sortable插件. 其基本用 法如下: <?php Yii::app()->clientScript->registerCss('sortable', " #sortable {list-style-type: none; margin: 0; padding: 0; width: 60%;} #sortable li {margin: 2px; padding: 4px; bo

PHP开发框架Yii Framework教程(45) Zii组件-Selectable示例

CJuiSelectable可以显示一个列表,列表的每个项支持Select事件,它封装了 JUI Selectable插件,其基本用法如下: <?php Yii::app()->clientScript->registerCss('selectable'," #selectable {list-style-type: none; margin: 0; padding: 0; width: 60%;} #selectable li {margin: 2px; padding: 4

PHP开发框架Yii Framework教程(44) Zii组件-Resizable示例

CJuiResizable可以使包含在其中的UI组件支持缩放功能,它封装了 JUI Resizable插件, CJuiResizable基本使用方 法如下: <?php $this->beginWidget('zii.widgets.jui.CJuiResizable', array( 'options'=>array( 'minWidth'=>50, 'minHeight'=>50, 'maxWidth'=>500, 'maxHeight'=>500, ), '

PHP开发框架Yii Framework教程(43) Zii组件-Droppable示例

上篇介绍如果使用UI组件支持拖放,CJuiDroppable表示某个区域可以接受拖拉过来的UI组件,它封装了 JUI Droppable插件 . 我们修改上例,添加一个Droppable区域,当有UI组件拖放到该区域时,显示"Dropped". <?php $this->beginWidget('zii.widgets.jui.CJuiDroppable', array( 'options'=>array( 'drop'=>'js:function(event,

PHP开发框架Yii Framework教程(42) Zii组件-Draggable示例

CJuiDraggable可以使包含着其中的其它UI组件实现拖放功能,它封装了 JUI Draggable插件. 要使某个UI组件可以 拖放,下面为使用CJuiDraggable的基本用法: <?php $this->beginWidget ('zii.widgets.jui.CJuiDraggable', array( 'options'=>array( 'cursor'=>'move', ), 'htmlOptions'=>array( 'style'=>'widt

PHP开发框架Yii Framework教程(40) Zii组件-SliderInput示例

CJuiSliderInput 显示一滑动条,它也封装了 JUI slider插件,可以用在Form中作为用户输入UI组件. 基本用法如 下: <center class="form"> <?php $form=$this->beginWidget('CActiveForm'); ?> <?php echo $form->errorSummary($model); ?> <?php $this->widget('zii.wid