程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP開發框架Yii Framework教程(28) Data Provider簡介

PHP開發框架Yii Framework教程(28) Data Provider簡介

編輯:PHP綜合

這開始介紹Zii組件之前,先簡要介紹一下Yii支持的數據源接口 IDataProvider,IDataProvider主要功能是為UI組件如 GridView,ListView等提供數據源,同時也支持數據的分頁和排序。下圖為Yii內置的三種數據源:

CActiveDataProvider  基於Active Record的數據源

CArraryDataProvider 基於數組的數據源

CSqlDataProvider      基於SQL查詢的數據源

三種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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved