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鐨勪娇鐢ㄦ柟娉曞涓嬶細
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 |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
calculateTotalItemCount() | 璁$畻鎵鏈夋暟鎹」鐨勬绘暟銆 | CActiveDataProvider |
fetchData() | 浠庢寔涔呮ф暟鎹瓨鍌ㄤ腑鑾峰彇鏁版嵁銆 | CActiveDataProvider |
fetchKeys() | 鑾峰彇鎸佷箙鎬ф暟鎹瓨鍌ㄧ殑鏁版嵁椤归敭銆 | CActiveDataProvider |
灞炴ц缁
criteria
灞炴
杩斿洖鐨勬煡璇㈡潯浠躲
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
灞炴
杩斿洖鎺掑簭鐨勫璞°
鏂规硶璇︾粏
__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);
}
璁剧疆鏌ヨ鏉′欢銆