这开始介绍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,以便于您获取更多的相关知识。