Yii Framework v1.1.10 绫诲弬鑰

CActiveDataProvider

system.web
缁ф壙 class CActiveDataProvider » CDataProvider » CComponent
瀹炵幇 IDataProvider
婧愯嚜 1.1
鐗堟湰 $Id: CActiveDataProvider.php 3426 2011-10-25 00:01:09Z alexander.makarow $
婧愮爜 framework/web/CActiveDataProvider.php
CActiveDataProvider鏄熀浜嶢ctiveRecord瀹炵幇鐨勪竴涓暟鎹暟鎹彁渚涜呫

CActiveDataProvider涓虹被modelClass鐨凙ctiveRecord瀵硅薄 鎻愪緵鏁版嵁銆傚畠浣跨敤AR鐨CActiveRecord::findAll鏂规硶锛 浠庢暟鎹簱涓绱俊鎭criteria灞炴ц兘澶熺敤鏉 鏌ヨ澶氱鎸囧畾鏉′欢銆

CActiveDataProvider鐨勪娇鐢ㄦ柟娉曞涓嬶細
$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

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
criteria CDbCriteria 杩斿洖鐨勬煡璇㈡潯浠躲 CActiveDataProvider
data array 杩斿洖褰撳墠鍙敤鐨勬暟鎹」銆 CDataProvider
id string 杩斿洖鎵鏈夋暟鎹彁渚涜呯殑鍞竴鏍囪瘑ID銆 CDataProvider
itemCount integer 杩斿洖褰撳墠椤甸潰鐨勬暟鎹」鏁扮洰銆 CDataProvider
keyAttribute string modelClass鐨勯敭鍊煎睘鎬х殑鍚嶇О銆傚鏋滄病鏈夎缃紝 杩欐剰鍛崇潃灏嗕娇鐢ㄧ浉搴旂殑鏁版嵁搴撹〃鐨勪富閿 CActiveDataProvider
keys array 杩斿洖鐩稿叧鏁版嵁椤圭殑閿 CDataProvider
model CActiveRecord AR finder鐨勫疄渚嬶紙渚嬪 Post::model()锛夈 杩欎釜灞炴у彲浠ラ氳繃灏唂inder鐨勫疄渚嬩綔涓烘瀯閫犲櫒鐨勭涓涓弬鏁版潵璁剧疆銆 渚嬪, Post::model()->published(). CActiveDataProvider
modelClass string 涓籄ctiveRecord鐨勭被鍚嶃 getData()鏂规硶灏嗕細杩斿洖杩欎釜绫荤殑瀵硅薄鐨勫垪琛ㄣ CActiveDataProvider
pagination CPagination 杩斿洖pagination瀵硅薄銆 CDataProvider
sort CSort 杩斿洖鎺掑簭鐨勫璞° CActiveDataProvider
totalItemCount integer 杩斿洖鎵鏈夋暟鎹」鐨勬绘暟銆 CDataProvider

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__construct() 鏋勯犳柟娉曘 CActiveDataProvider
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 CComponent
__set() 璁剧疆涓涓粍浠剁殑灞炴у笺 CComponent
__unset() 璁剧疆涓涓粍浠剁殑灞炴т负null銆 CComponent
asa() 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° CComponent
attachBehavior() 闄勫姞涓涓涓哄埌缁勪欢銆 CComponent
attachBehaviors() 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 CComponent
attachEventHandler() 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 CComponent
canGetProperty() 纭畾灞炴ф槸鍚﹀彲璇汇 CComponent
canSetProperty() 纭畾灞炴ф槸鍚﹀彲鍐欍 CComponent
detachBehavior() 浠庣粍浠朵腑鍒嗙涓涓涓恒 CComponent
detachBehaviors() 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 CComponent
detachEventHandler() 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 CComponent
disableBehavior() 绂佺敤涓涓檮鍔犺涓恒 CComponent
disableBehaviors() 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
enableBehavior() 鍚敤涓涓檮鍔犺涓恒 CComponent
enableBehaviors() 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
evaluateExpression() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getCriteria() 杩斿洖鐨勬煡璇㈡潯浠躲 CActiveDataProvider
getData() 杩斿洖褰撳墠鍙敤鐨勬暟鎹」銆 CDataProvider
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
getId() 杩斿洖鎵鏈夋暟鎹彁渚涜呯殑鍞竴鏍囪瘑ID銆 CDataProvider
getItemCount() 杩斿洖褰撳墠椤甸潰鐨勬暟鎹」鏁扮洰銆 CDataProvider
getKeys() 杩斿洖鐩稿叧鏁版嵁椤圭殑閿 CDataProvider
getPagination() 杩斿洖pagination瀵硅薄銆 CDataProvider
getSort() 杩斿洖鎺掑簭鐨勫璞° CActiveDataProvider
getTotalItemCount() 杩斿洖鎵鏈夋暟鎹」鐨勬绘暟銆 CDataProvider
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
setCriteria() 璁剧疆鏌ヨ鏉′欢銆 CActiveDataProvider
setData() 涓簆rovider璁剧疆鏁版嵁椤广 CDataProvider
setId() 璁剧疆provider鐨処D銆 CDataProvider
setKeys() 涓簆rovider璁剧疆鏁版嵁椤圭殑閿 CDataProvider
setPagination() 璁剧疆provider鐨刾agination瀵硅薄銆 CDataProvider
setSort() 涓烘暟鎹彁渚涜呰缃帓搴忋 CDataProvider
setTotalItemCount() 璁剧疆鎵鏈夋暟鎹」鐨勬绘暟銆 CDataProvider

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
calculateTotalItemCount() 璁$畻鎵鏈夋暟鎹」鐨勬绘暟銆 CActiveDataProvider
fetchData() 浠庢寔涔呮ф暟鎹瓨鍌ㄤ腑鑾峰彇鏁版嵁銆 CActiveDataProvider
fetchKeys() 鑾峰彇鎸佷箙鎬ф暟鎹瓨鍌ㄧ殑鏁版嵁椤归敭銆 CActiveDataProvider

灞炴ц缁

criteria 灞炴
public CDbCriteria getCriteria()
public void setCriteria(mixed $value)

杩斿洖鐨勬煡璇㈡潯浠躲

keyAttribute 灞炴
public string $keyAttribute;

modelClass鐨勯敭鍊煎睘鎬х殑鍚嶇О銆傚鏋滄病鏈夎缃紝 杩欐剰鍛崇潃灏嗕娇鐢ㄧ浉搴旂殑鏁版嵁搴撹〃鐨勪富閿

model 灞炴 锛堝彲鐢ㄨ嚜 v1.1.3锛
public CActiveRecord $model;

AR finder鐨勫疄渚嬶紙渚嬪 Post::model()锛夈 杩欎釜灞炴у彲浠ラ氳繃灏唂inder鐨勫疄渚嬩綔涓烘瀯閫犲櫒鐨勭涓涓弬鏁版潵璁剧疆銆 渚嬪, Post::model()->published().

modelClass 灞炴
public string $modelClass;

涓籄ctiveRecord鐨勭被鍚嶃 getData()鏂规硶灏嗕細杩斿洖杩欎釜绫荤殑瀵硅薄鐨勫垪琛ㄣ

sort 灞炴
public CSort getSort()
public void setSort(mixed $value)

杩斿洖鎺掑簭鐨勫璞°

鏂规硶璇︾粏

__construct() 鏂规硶
public void __construct(mixed $modelClass, array $config=array ( ))
$modelClass mixed 妯″瀷鐨勭被锛堜緥濡傗楶ost鈥欙級鎴栬呮ā鍨嬬殑finder瀹炰緥 锛堜緥濡Post::model()Post::model()->published()锛夈
$config array 閰嶇疆鍙傛暟锛坣ame=>value锛夊皢浣滀负杩欎釜绫荤殑鍒濆灞炴у笺
婧愮爜锛 framework/web/CActiveDataProvider.php#70 (鏄剧ず)
public function __construct($modelClass,$config=array())
{
    if(
is_string($modelClass))
    {
        
$this->modelClass=$modelClass;
        
$this->model=CActiveRecord::model($this->modelClass);
    }
    else if(
$modelClass instanceof CActiveRecord)
    {
        
$this->modelClass=get_class($modelClass);
        
$this->model=$modelClass;
    }
    
$this->setId($this->modelClass);
    foreach(
$config as $key=>$value)
        
$this->$key=$value;
}

鏋勯犳柟娉曘

calculateTotalItemCount() 鏂规硶
protected integer calculateTotalItemCount()
{return} integer 鏁版嵁椤圭殑鎬绘暟銆
婧愮爜锛 framework/web/CActiveDataProvider.php#174 (鏄剧ず)
protected function calculateTotalItemCount()
{
    
$baseCriteria=$this->model->getDbCriteria(false);
    if(
$baseCriteria!==null)
        
$baseCriteria=clone $baseCriteria;
    
$count=$this->model->count($this->getCriteria());
    
$this->model->setDbCriteria($baseCriteria);
    return 
$count;
}

璁$畻鎵鏈夋暟鎹」鐨勬绘暟銆

fetchData() 鏂规硶
protected array fetchData()
{return} array 鏁版嵁椤瑰垪琛
婧愮爜锛 framework/web/CActiveDataProvider.php#123 (鏄剧ず)
protected function fetchData()
{
    
$criteria=clone $this->getCriteria();

    if((
$pagination=$this->getPagination())!==false)
    {
        
$pagination->setItemCount($this->getTotalItemCount());
        
$pagination->applyLimit($criteria);
    }

    
$baseCriteria=$this->model->getDbCriteria(false);

    if((
$sort=$this->getSort())!==false)
    {
        
// set model criteria so that CSort can use its table alias setting
        
if($baseCriteria!==null)
        {
            
$c=clone $baseCriteria;
            
$c->mergeWith($criteria);
            
$this->model->setDbCriteria($c);
        }
        else
            
$this->model->setDbCriteria($criteria);
        
$sort->applyOrder($criteria);
    }

    
$this->model->setDbCriteria($baseCriteria!==null ? clone $baseCriteria null);
    
$data=$this->model->findAll($criteria);
    
$this->model->setDbCriteria($baseCriteria);  // restore original criteria
    
return $data;
}

浠庢寔涔呮ф暟鎹瓨鍌ㄤ腑鑾峰彇鏁版嵁銆

fetchKeys() 鏂规硶
protected array fetchKeys()
{return} array 鍒楄〃鏁版嵁椤圭殑閿
婧愮爜锛 framework/web/CActiveDataProvider.php#159 (鏄剧ず)
protected function fetchKeys()
{
    
$keys=array();
    foreach(
$this->getData() as $i=>$data)
    {
        
$key=$this->keyAttribute===null $data->getPrimaryKey() : $data->{$this->keyAttribute};
        
$keys[$i]=is_array($key) ? implode(',',$key) : $key;
    }
    return 
$keys;
}

鑾峰彇鎸佷箙鎬ф暟鎹瓨鍌ㄧ殑鏁版嵁椤归敭銆

getCriteria() 鏂规硶
public CDbCriteria getCriteria()
{return} CDbCriteria 鏌ヨ鏉′欢
婧愮爜锛 framework/web/CActiveDataProvider.php#91 (鏄剧ず)
public function getCriteria()
{
    if(
$this->_criteria===null)
        
$this->_criteria=new CDbCriteria;
    return 
$this->_criteria;
}

杩斿洖鐨勬煡璇㈡潯浠躲

getSort() 鏂规硶
public CSort getSort()
{return} CSort 鎺掑簭鐨勫璞°傚鏋滆繑鍥炰负false锛岃繖鎰忓懗鐫鎺掑簭琚鐢ㄣ
婧愮爜锛 framework/web/CActiveDataProvider.php#112 (鏄剧ず)
public function getSort()
{
    if((
$sort=parent::getSort())!==false)
        
$sort->modelClass=$this->modelClass;
    return 
$sort;
}

杩斿洖鎺掑簭鐨勫璞°

setCriteria() 鏂规硶
public void setCriteria(mixed $value)
$value mixed 鏌ヨ鏉′欢銆 杩欏彲浠ユ槸涓涓狢DbCriteria鐨勫璞℃垨鏁扮粍鏋勬垚鐨勬煡璇㈡潯浠躲
婧愮爜锛 framework/web/CActiveDataProvider.php#103 (鏄剧ず)
public function setCriteria($value)
{
    
$this->_criteria=$value instanceof CDbCriteria $value : new CDbCriteria($value);
}

璁剧疆鏌ヨ鏉′欢銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.