Yii Framework v1.1.10 绫诲弬鑰

CBaseActiveRelation

system.db.ar
缁ф壙 class CBaseActiveRelation » CComponent
瀛愮被 CActiveRelation, CStatRelation
鐗堟湰 $Id: CActiveRecord.php 3533 2012-01-08 22:07:55Z mdomba $
婧愮爜 framework/db/ar/CActiveRecord.php
CBaseActiveRelation鏄墍鏈夋椿鍔ㄥ叧绯荤被鐨勫熀绫汇

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
className string 鐩稿叧鐨勬椿鍔ㄨ褰曠被鐨勫悕瀛 CBaseActiveRelation
condition string WHERE 瀛愬彞銆傚CActiveRelation杩欎釜缁ф壙绫, 鍏宠仈鍒版潯浠堕噷闈㈢殑瀛楁鍚嶅瓧搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔夈 CBaseActiveRelation
foreignKey mixed 鍏崇郴涓殑澶栭敭 CBaseActiveRelation
group string GROUP BY 瀛愬彞銆傚CActiveRelation杩欎釜缁ф壙绫, 鍏宠仈鍒版潯浠堕噷闈㈢殑瀛楁鍚嶅瓧搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔. CBaseActiveRelation
having string HAVING 瀛愬彞銆備负CActiveRelation瀛愮被锛 鍦ㄦ灞炴т腑寮曠敤鐨勫垪鍚嶇О搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔夈 CBaseActiveRelation
join string 鎬庢牱璺熷叾瀹冩暟鎹〃鍏宠仈銆傝繖涓窡鍦 SQL 璇彞涓 JOIN 鏉℃鐩稿悓銆 姣斿锛'LEFT JOIN users ON users. CBaseActiveRelation
name string 鐩稿叧瀵硅薄鐨勫悕瀛 CBaseActiveRelation
order string ORDER BY 瀛愬彞銆備负CActiveRelation瀛愮被锛 鍦ㄦ灞炴т腑寮曠敤鐨勫垪鍚嶇О搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔夈 CBaseActiveRelation
params array 鏉′欢涓殑绾︽潫鏁版嵁銆 閿悕鏄弬鏁扮殑鍗犱綅绗﹀悕瀛楋紝鍊兼槸鍙傛暟鍊笺 CBaseActiveRelation
select mixed 瑕佹煡璇㈢殑瀛楁鍚嶅瓧銆傦紙鏁扮粍鎴栬呮槸鍚嶅瓧浠ラ楀彿鍒嗛殧鐨勫瓧绗︿覆锛夈 涓嶈杞箟鎴栬呮槸娣诲姞鍓嶇紑鍒拌繖涓瓧娈靛悕瀛楋紝闄ら潪瀹冧滑闇瑕佸湪琛ㄨ揪寮忛噷闈㈢敤鍒般 杩欑鎯呭喌涓嬶紝浣犲簲璇ヤ互鈥榬elationName鈥欎綔涓哄瓧娈靛墠缂銆 CBaseActiveRelation

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__construct() 鏋勯犲嚱鏁般 CBaseActiveRelation
__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
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
mergeWith() 灏嗕竴涓姩鎬佹寚瀹氱殑鏉′欢鍚堝苟鍒拌繖涓叧绯汇 CBaseActiveRelation
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent

灞炴ц缁

className 灞炴
public string $className;

鐩稿叧鐨勬椿鍔ㄨ褰曠被鐨勫悕瀛

condition 灞炴
public string $condition;

WHERE 瀛愬彞銆傚CActiveRelation杩欎釜缁ф壙绫, 鍏宠仈鍒版潯浠堕噷闈㈢殑瀛楁鍚嶅瓧搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔夈

foreignKey 灞炴
public mixed $foreignKey;

鍏崇郴涓殑澶栭敭

group 灞炴
public string $group;

GROUP BY 瀛愬彞銆傚CActiveRelation杩欎釜缁ф壙绫, 鍏宠仈鍒版潯浠堕噷闈㈢殑瀛楁鍚嶅瓧搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔.

having 灞炴
public string $having;

HAVING 瀛愬彞銆備负CActiveRelation瀛愮被锛 鍦ㄦ灞炴т腑寮曠敤鐨勫垪鍚嶇О搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔夈

join 灞炴 锛堝彲鐢ㄨ嚜 v1.1.3锛
public string $join;

鎬庢牱璺熷叾瀹冩暟鎹〃鍏宠仈銆傝繖涓窡鍦 SQL 璇彞涓 JOIN 鏉℃鐩稿悓銆 姣斿锛'LEFT JOIN users ON users.id=authorID'

name 灞炴
public string $name;

鐩稿叧瀵硅薄鐨勫悕瀛

order 灞炴
public string $order;

ORDER BY 瀛愬彞銆備负CActiveRelation瀛愮被锛 鍦ㄦ灞炴т腑寮曠敤鐨勫垪鍚嶇О搴旇浠ュ墠缂 'relationName' 鏉ラ槻姝㈡涔夈

params 灞炴
public array $params;

鏉′欢涓殑绾︽潫鏁版嵁銆 閿悕鏄弬鏁扮殑鍗犱綅绗﹀悕瀛楋紝鍊兼槸鍙傛暟鍊笺

select 灞炴
public mixed $select;

瑕佹煡璇㈢殑瀛楁鍚嶅瓧銆傦紙鏁扮粍鎴栬呮槸鍚嶅瓧浠ラ楀彿鍒嗛殧鐨勫瓧绗︿覆锛夈 涓嶈杞箟鎴栬呮槸娣诲姞鍓嶇紑鍒拌繖涓瓧娈靛悕瀛楋紝闄ら潪瀹冧滑闇瑕佸湪琛ㄨ揪寮忛噷闈㈢敤鍒般 杩欑鎯呭喌涓嬶紝浣犲簲璇ヤ互鈥榬elationName鈥欎綔涓哄瓧娈靛墠缂銆

鏂规硶璇︾粏

__construct() 鏂规硶
public void __construct(string $name, string $className, string $foreignKey, array $options=array ( ))
$name string 鍏崇郴鐨勫悕绉
$className string 鐩稿叧娲诲姩璁板綍绫荤殑鍚嶇О
$foreignKey string 杩欑鍏崇郴鐨勫閿
$options array 闄勫姞閫夐」锛坣ame=>value锛夛紝閿繀椤绘槸杩欎釜绫荤殑灞炴у悕銆
婧愮爜锛 framework/db/ar/CActiveRecord.php#1926 (鏄剧ず)
public function __construct($name,$className,$foreignKey,$options=array())
{
    
$this->name=$name;
    
$this->className=$className;
    
$this->foreignKey=$foreignKey;
    foreach(
$options as $name=>$value)
        
$this->$name=$value;
}

鏋勯犲嚱鏁般

mergeWith() 鏂规硶
public void mergeWith(array $criteria, boolean $fromScope=false)
$criteria array 鍔ㄦ佹寚瀹氱殑鏉′欢
$fromScope boolean 鏄惁姝ゆ潯浠惰浠庤寖鍥村悎骞
婧愮爜锛 framework/db/ar/CActiveRecord.php#1940 (鏄剧ず)
public function mergeWith($criteria,$fromScope=false)
{
    if(
$criteria instanceof CDbCriteria)
        
$criteria=$criteria->toArray();
    if(isset(
$criteria['select']) && $this->select!==$criteria['select'])
    {
        if(
$this->select==='*')
            
$this->select=$criteria['select'];
        else if(
$criteria['select']!=='*')
        {
            
$select1=is_string($this->select)?preg_split('/\s*,\s*/',trim($this->select),-1,PREG_SPLIT_NO_EMPTY):$this->select;
            
$select2=is_string($criteria['select'])?preg_split('/\s*,\s*/',trim($criteria['select']),-1,PREG_SPLIT_NO_EMPTY):$criteria['select'];
            
$this->select=array_merge($select1,array_diff($select2,$select1));
        }
    }

    if(isset(
$criteria['condition']) && $this->condition!==$criteria['condition'])
    {
        if(
$this->condition==='')
            
$this->condition=$criteria['condition'];
        else if(
$criteria['condition']!=='')
            
$this->condition="({$this->condition}) AND ({$criteria['condition']})";
    }

    if(isset(
$criteria['params']) && $this->params!==$criteria['params'])
        
$this->params=array_merge($this->params,$criteria['params']);

    if(isset(
$criteria['order']) && $this->order!==$criteria['order'])
    {
        if(
$this->order==='')
            
$this->order=$criteria['order'];
        else if(
$criteria['order']!=='')
            
$this->order=$criteria['order'].', '.$this->order;
    }

    if(isset(
$criteria['group']) && $this->group!==$criteria['group'])
    {
        if(
$this->group==='')
            
$this->group=$criteria['group'];
        else if(
$criteria['group']!=='')
            
$this->group.=', '.$criteria['group'];
    }

    if(isset(
$criteria['join']) && $this->join!==$criteria['join'])
    {
        if(
$this->join==='')
            
$this->join=$criteria['join'];
        else if(
$criteria['join']!=='')
            
$this->join.=' '.$criteria['join'];
    }

    if(isset(
$criteria['having']) && $this->having!==$criteria['having'])
    {
        if(
$this->having==='')
            
$this->having=$criteria['having'];
        else if(
$criteria['having']!=='')
            
$this->having="({$this->having}) AND ({$criteria['having']})";
    }
}

灏嗕竴涓姩鎬佹寚瀹氱殑鏉′欢鍚堝苟鍒拌繖涓叧绯汇

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