CDbCommand
鍖 | system.db |
---|---|
缁ф壙 | class CDbCommand » CComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CDbCommand.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/db/CDbCommand.php |
瀹冮氬父閫氳繃璋冪敤CDbConnection::createCommand鍒涘缓銆 瑕佹墽琛岀殑SQL璇彞鍙互閫氳繃Text璁剧疆銆
瑕佹墽琛屼竴鏉¢潪鏌ヨ鐨凷QL锛堝锛歩nsert锛宒elete锛寀pdate锛夛紝璋冪敤execute銆 瑕佹墽琛屼竴鏉QL璇彞杩斿洖缁撴灉鏁版嵁闆嗭紙濡傦細SELECT锛夛紝 浣跨敤 query 鎴栧畠鐨勭畝渚跨増鏈 queryRow锛 queryColumn鎴栬queryScalar銆
濡傛灉涓涓猄QL璇彞杩斿洖缁撴灉锛堟瘮濡備竴涓猄ELECT璇彞锛夛紝 缁撴灉鍙互閫氳繃宸茶繑鍥炵殑CDbDataReader璁块棶銆
CDbCommand鏀寔SQL璇彞棰勫鐞嗗拰鍙傛暟缁戝畾銆 璋冪敤 bindParam 鍘荤粦瀹氫竴涓狿HP鍙橀噺鍒癝QL涓殑涓涓弬鏁般 璋冪敤 bindValue 鍘荤粦瀹氫竴涓煎埌涓涓猄QL鍙傛暟銆 褰撶粦瀹氫竴涓弬鏁版椂锛屾SQL璇彞灏嗚嚜鍔ㄥ噯澶囧ソ銆 浣犱篃鍙互璋冪敤prepare鍘绘槑纭殑鍑嗗涓鏉QL璇彞銆
寮濮嬭嚜鐗堟湰 1.1.6锛孋DbCommand涔熻兘鐢ㄤ綔涓涓煡璇㈢敓鎴愬櫒锛 浠庝唬鐮佺墖鏂缓绔嬩竴鏉QL璇彞銆備緥濡傦細
$user = Yii::app()->db->createCommand() ->select('username, password') ->from('tbl_user') ->where('id=:id', array(':id'=>1)) ->queryRow();
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
connection | CDbConnection | 鍜岃繖涓懡浠ょ浉鍏崇殑杩炴帴銆 | CDbCommand |
distinct | boolean | 杩斿洖涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ | CDbCommand |
from | string | 杩斿洖鏌ヨ鐨 FROM 閮ㄥ垎銆 | CDbCommand |
group | string | 杩斿洖鏌ヨ涓殑 GROUP BY 閮ㄥ垎銆 | CDbCommand |
having | string | 杩斿洖鏌ヨ鐨凥AVING閮ㄥ垎銆 | CDbCommand |
join | mixed | 杩斿洖鏌ヨ鐨刯oin閮ㄥ垎銆 | CDbCommand |
limit | string | 杩斿洖鏌ヨ鐨 LIMIT 閮ㄥ垎銆 | CDbCommand |
offset | string | 杩斿洖鏌ヨ鐨 OFFSET 閮ㄥ垎銆 | CDbCommand |
order | string | 杩斿洖鏌ヨ鐨 ORDER BY 閮ㄥ垎銆 | CDbCommand |
params | array | 鍙傛暟锛坣ame=>value锛夎缁戝畾瑕佹煡璇㈢殑褰撳墠璇彞銆 | CDbCommand |
pdoStatement | PDOStatement | 杩欎釜鍛戒护搴曞眰鐨凱DOStatement 濡傛灉灏氭湭鍑嗗濂借鍙ワ紝瀹冨彲浠ユ槸null銆 | CDbCommand |
select | string | 杩斿洖鏌ヨ鐨凷ELECT閮ㄥ垎銆 | CDbCommand |
text | string | 杩斿洖灏嗚鎵ц鐨凷QL璇彞銆 | CDbCommand |
union | mixed | 杩斿洖鏌ヨ鐨 UNION 閮ㄥ垎銆 | CDbCommand |
where | string | 杩斿洖鏌ヨ鐨刉HERE閮ㄥ垎銆 | CDbCommand |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__construct() | 鏋勯犲嚱鏁般 | CDbCommand |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__sleep() | 褰撳簭鍒楀寲鏃惰鍙ュ0鏄庝负null銆 | CDbCommand |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
addColumn() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄鍔犱竴涓柊鐨勬暟鎹垪銆 | CDbCommand |
addForeignKey() | 涓哄凡缁忓瓨鍦ㄧ殑鏁版嵁琛ㄥ垱寤轰竴鏉″閿害鏉熺殑SQL璇彞銆 | CDbCommand |
alterColumn() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓烘敼鍙樹竴涓垪鐨勫畾涔夈 | CDbCommand |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
bindParam() | 缁戝畾涓涓弬鏁板埌瑕佹墽琛岀殑璇彞銆 | CDbCommand |
bindValue() | 缁戝畾涓涓煎埌鍙傛暟銆 | CDbCommand |
bindValues() | 灏嗕竴涓垪琛ㄧ殑鍊肩粦瀹氬埌鐩稿簲鍙傛暟銆 | CDbCommand |
buildQuery() | 鐢熸垚涓涓猄QL SELECT璇彞浠庣粰瀹氭煡璇㈣鑼冦 | CDbCommand |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
cancel() | 鍙栨秷SQL璇彞鐨勬墽琛屻 | CDbCommand |
createIndex() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垱寤轰竴涓柊绱㈠紩銆 | CDbCommand |
createTable() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垱寤轰竴涓暟鎹〃銆 | CDbCommand |
crossJoin() | 闄勫姞涓涓狢ROSS JOIN閮ㄥ垎鍒版鏌ヨ銆 | CDbCommand |
delete() | 鍒涘缓骞舵墽琛屼竴鏉 DELETE SQL 璇彞銆 | CDbCommand |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
dropColumn() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垹闄や竴涓暟鎹垪銆 | CDbCommand |
dropForeignKey() | 寤虹珛涓鏉QL璇彞涓哄垹闄や竴涓閿害鏉熴 | CDbCommand |
dropIndex() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垹闄や竴涓储寮曘 | CDbCommand |
dropTable() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垹闄や竴涓暟鎹〃 | CDbCommand |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
execute() | 鎵ц姝 SQL 璇彞銆 | CDbCommand |
from() | 璁剧疆鏌ヨ鐨凢ROM閮ㄥ垎銆 | CDbCommand |
getConnection() | 杩斿洖鍜岃繖涓懡浠ょ浉鍏崇殑杩炴帴銆 | CDbCommand |
getDistinct() | 杩斿洖涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ | CDbCommand |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getFrom() | 杩斿洖鏌ヨ鐨 FROM 閮ㄥ垎銆 | CDbCommand |
getGroup() | 杩斿洖鏌ヨ涓殑 GROUP BY 閮ㄥ垎銆 | CDbCommand |
getHaving() | 杩斿洖鏌ヨ鐨凥AVING閮ㄥ垎銆 | CDbCommand |
getJoin() | 杩斿洖鏌ヨ鐨刯oin閮ㄥ垎銆 | CDbCommand |
getLimit() | 杩斿洖鏌ヨ鐨 LIMIT 閮ㄥ垎銆 | CDbCommand |
getOffset() | 杩斿洖鏌ヨ鐨 OFFSET 閮ㄥ垎銆 | CDbCommand |
getOrder() | 杩斿洖鏌ヨ鐨 ORDER BY 閮ㄥ垎銆 | CDbCommand |
getPdoStatement() | 杩斿洖杩欎釜鍛戒护搴曞眰鐨凱DOStatement 濡傛灉灏氭湭鍑嗗濂借鍙ワ紝瀹冨彲浠ユ槸null銆 | CDbCommand |
getSelect() | 杩斿洖鏌ヨ鐨凷ELECT閮ㄥ垎銆 | CDbCommand |
getText() | 杩斿洖杩斿洖灏嗚鎵ц鐨凷QL璇彞銆 | CDbCommand |
getUnion() | 杩斿洖鏌ヨ鐨 UNION 閮ㄥ垎銆 | CDbCommand |
getWhere() | 杩斿洖鏌ヨ鐨刉HERE閮ㄥ垎銆 | CDbCommand |
group() | 璁剧疆鏌ヨ鐨 GROUP BY 閮ㄥ垎銆 | CDbCommand |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
having() | 璁剧疆鏌ヨ鐨 HAVING 閮ㄥ垎銆 | CDbCommand |
insert() | 鍒涘缓鍜屾墽琛屼竴涓猄QL璇彞銆 | CDbCommand |
join() | 闄勫姞涓涓狪NNER JOIN閮ㄥ垎鍒版鏌ヨ銆 | CDbCommand |
leftJoin() | 闄勫姞涓涓狶EFT OUTER JOIN閮ㄥ垎鍒版鏌ヨ銆 | CDbCommand |
limit() | 璁剧疆鏌ヨ鐨 LIMIT 閮ㄥ垎銆 | CDbCommand |
naturalJoin() | 闄勫姞涓涓狽ATURAL JOIN 閮ㄥ垎鍒版煡璇€ | CDbCommand |
offset() | 璁剧疆鏌ヨ鐨 OFFSET 閮ㄥ垎銆 | CDbCommand |
order() | 璁剧疆姝ゆ煡璇㈢殑ORDER BY閮ㄥ垎銆 | CDbCommand |
prepare() | 鍑嗗瑕佹墽琛岀殑SQL璇彞銆 | CDbCommand |
query() | 鎵цSQL璇彞骞惰繑鍥炴煡璇㈢粨鏋溿 | CDbCommand |
queryAll() | 鎵цSQL璇彞骞惰繑鍥炴墍鏈夎銆 | CDbCommand |
queryColumn() | 鎵цSQL璇彞骞惰繑鍥炵粨鏋滅殑绗竴鍒椼 | CDbCommand |
queryRow() | 鎵ц姝QL璇彞骞惰繑鍥炵粨鏋滅殑绗竴琛屻 | CDbCommand |
queryScalar() | 鎵ц姝QL璇彞骞惰繑鍥炵涓琛屾暟鎹殑绗竴鍒楃殑鍊笺 | CDbCommand |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
renameColumn() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓洪噸鍛藉悕涓涓垪銆 | CDbCommand |
renameTable() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓洪噸鍛藉悕涓涓暟鎹〃銆 | CDbCommand |
reset() | 娓呯悊鍛戒护锛屽苟鍑嗗寤虹珛涓涓柊鐨勬煡璇€ | CDbCommand |
rightJoin() | 闄勫姞涓涓猂IGHT OUTER JOIN閮ㄥ垎鍒版鏌ヨ銆 | CDbCommand |
select() | 璁剧疆鏌ヨ鐨凷ELECT閮ㄥ垎銆 | CDbCommand |
selectDistinct() | 璁剧疆姝ゆ煡璇㈢殑SELECT閮ㄥ垎锛屽甫鏈塂ISTINCT鏍囧織寮鍏炽 | CDbCommand |
setDistinct() | 璁剧疆涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ | CDbCommand |
setFetchMode() | 璁剧疆姝よ鍙ョ殑榛樿璇诲彇妯″紡銆 | CDbCommand |
setFrom() | 璁剧疆鏌ヨ鐨凢ROM閮ㄥ垎銆 | CDbCommand |
setGroup() | 璁剧疆鏌ヨ鐨 GROUP BY 閮ㄥ垎銆 | CDbCommand |
setHaving() | 璁剧疆鏌ヨ鐨 HAVING 閮ㄥ垎銆 | CDbCommand |
setJoin() | 璁剧疆鏌ヨ鐨刯oin閮ㄥ垎銆 | CDbCommand |
setLimit() | 璁剧疆鏌ヨ鐨 LIMIT 閮ㄥ垎銆 | CDbCommand |
setOffset() | 璁剧疆鏌ヨ鐨 OFFSET 閮ㄥ垎銆 | CDbCommand |
setOrder() | 璁剧疆鏌ヨ鐨 ORDER BY 閮ㄥ垎銆 | CDbCommand |
setSelect() | 璁剧疆鐨凷ELECT閮ㄥ垎銆 | CDbCommand |
setText() | 鎸囧畾瑕佹墽琛岀殑SQL璇彞銆 | CDbCommand |
setUnion() | 璁剧疆鏌ヨ鐨 UNION 閮ㄥ垎銆 | CDbCommand |
setWhere() | 璁剧疆鏌ヨ鐨 WHERE 閮ㄥ垎銆 | CDbCommand |
truncateTable() | 缁戝畾骞舵墽琛屼竴鏉QL璇彞涓烘竻绌轰竴涓暟鎹〃銆 | CDbCommand |
union() | 闄勫姞涓涓猆NION鎿嶄綔绗﹀埌涓涓猄QL璇彞銆 | CDbCommand |
update() | 鍒涘缓骞舵墽琛屼竴鏉PDATE SQL璇彞銆 | CDbCommand |
where() | 璁剧疆鏌ヨ鐨刉HERE銆 | CDbCommand |
灞炴ц缁
鍜岃繖涓懡浠ょ浉鍏崇殑杩炴帴銆
杩斿洖涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ
杩斿洖鏌ヨ鐨 FROM 閮ㄥ垎銆
杩斿洖鏌ヨ涓殑 GROUP BY 閮ㄥ垎銆
杩斿洖鏌ヨ鐨凥AVING閮ㄥ垎銆
杩斿洖鏌ヨ鐨刯oin閮ㄥ垎銆
杩斿洖鏌ヨ鐨 LIMIT 閮ㄥ垎銆
杩斿洖鏌ヨ鐨 OFFSET 閮ㄥ垎銆
杩斿洖鏌ヨ鐨 ORDER BY 閮ㄥ垎銆
鍙傛暟锛坣ame=>value锛夎缁戝畾瑕佹煡璇㈢殑褰撳墠璇彞銆
杩欎釜鍛戒护搴曞眰鐨凱DOStatement 濡傛灉灏氭湭鍑嗗濂借鍙ワ紝瀹冨彲浠ユ槸null銆
杩斿洖鏌ヨ鐨凷ELECT閮ㄥ垎銆
杩斿洖灏嗚鎵ц鐨凷QL璇彞銆
杩斿洖鏌ヨ鐨 UNION 閮ㄥ垎銆
杩斿洖鏌ヨ鐨刉HERE閮ㄥ垎銆
鏂规硶璇︾粏
public void __construct(CDbConnection $connection, mixed $query=NULL)
| ||
$connection | CDbConnection | 鏁版嵁搴撹繛鎺 |
$query | mixed | 瑕佹墽琛岀殑鏁版嵁搴撴煡璇€傝繖涓彲浠ユ槸浠h〃SQL璇彞鐨勪竴涓瓧绗︿覆鎴栦竴涓暟缁勶紝
瀹冪殑閿悕-閿煎灏嗚鐢ㄤ綔璁剧疆锛
鍒涘缓鐩稿簲瀵硅薄鍛戒护鐨勫睘鎬с
渚嬪锛屼綘鑳戒紶閫 鈥楽ELECT * FROM tbl_user鈥
鎴 array(鈥榮elect鈥=>鈥*鈥欙紝鈥榝rom鈥=>鈥榯bl_user鈥) 銆
浠栦滑鏈缁堢殑鏌ヨ缁撴灉绛夊悓銆
褰撲紶閫掓煡璇负涓涓暟缁勬椂锛岄氬父瑕佽缃笅闈㈢殑灞炴: select锛distinct锛from锛where锛join锛 group锛having锛order锛limit锛offset鍜union銆 璇峰弬鑰冭繖浜涘睘鎬ф瘡涓缃殑鏇村缁嗚妭銆 鍏充簬楠岃瘉灞炴с傝繖涓姛鑳藉彲鐢ㄨ嚜鐗堟湰 1.1.6銆 鑷 1.1.7 閫氳繃璁剧疆FetchMode浣跨敤涓涓壒瀹氱殑鏁版嵁鑾峰彇妯″紡鏄彲鑳界殑銆傚弬瑙http://www.php.net/manual/en/function.PDOStatement-setFetchMode.php 涓烘洿澶氳缁嗕俊鎭 |
public function __construct(CDbConnection $connection,$query=null)
{
$this->_connection=$connection;
if(is_array($query))
{
foreach($query as $name=>$value)
$this->$name=$value;
}
else
$this->setText($query);
}
鏋勯犲嚱鏁般
public array __sleep()
| ||
{return} | array |
public function __sleep()
{
$this->_statement=null;
return array_keys(get_object_vars($this));
}
褰撳簭鍒楀寲鏃惰鍙ュ0鏄庝负null銆
public integer addColumn(string $table, string $column, string $type)
| ||
$table | string | 鏂板垪灏嗚娣诲姞杩涘幓鐨勮〃銆傛琛ㄥ悕灏嗚姝ゆ柟娉曟伆褰撶殑寮曠敤銆 |
$column | string | 鏂板垪鐨勫悕绉般傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$type | string | 鍒楃被鍨嬶紝getColumnType鏂规硶灏嗚瑙﹀彂杞崲鎶借薄鐨勫垪绫诲瀷(鑻ユ湁)涓哄疄闄呯被鍨嬨 浠讳綍涓嶈兘璇嗗埆鐨勬娊璞$被鍨嬪皢淇濇寔鍦ㄧ敓鎴愮殑SQL涓 渚嬪锛'string'灏嗚杞崲鎴'varchar(255)', 鍚屾椂 'string not null' 灏嗗彉鎴 'varchar(255) not null'. |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function addColumn($table, $column, $type)
{
return $this->setText($this->getConnection()->getSchema()->addColumn($table, $column, $type))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄鍔犱竴涓柊鐨勬暟鎹垪銆
public integer addForeignKey(string $name, string $table, string $columns, string $refTable, string $refColumns, string $delete=NULL, string $update=NULL)
| ||
$name | string | 澶栭敭缁撴潫鐨勫悕绉般 |
$table | string | 澶栭敭缁撴潫灏嗚娣诲姞杩涘幓鐨勮〃銆 |
$columns | string | 绾︽潫灏嗚娣诲姞鍒扮殑琛ㄥ悕銆傚鏋滄湁澶氬垪锛岀敤閫楀彿鍒嗗紑瀹冧滑銆 |
$refTable | string | 澶栭敭寮曠敤鐨勮〃銆 |
$refColumns | string | 澶栭敭寮曠敤鐨勫垪鐨勫悕绉般傚鏋滄湁澶氬垪锛岀敤閫楀彿鍒嗗紑瀹冧滑銆 |
$delete | string | ON DELETE 閫夐」銆 澶ч儴鍒 DBMS 鏀寔杩欎釜閫夐」: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL |
$update | string | ON UPDATE 閫夐」銆 澶ч儴鍒 DBMS 鏀寔杩欎釜閫夐」: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete=null, $update=null)
{
return $this->setText($this->getConnection()->getSchema()->addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete, $update))->execute();
}
涓哄凡缁忓瓨鍦ㄧ殑鏁版嵁琛ㄥ垱寤轰竴鏉″閿害鏉熺殑SQL璇彞銆 杩欎釜鏂规硶灏嗘伆褰撶殑寮曠敤姝ゅ垪鍜屽垪鍚嶃
public integer alterColumn(string $table, string $column, string $type)
| ||
$table | string | 鍒楀皢琚敼鍙樼殑琛ㄣ傝〃鍚嶅皢琚繖涓柟娉曟伆褰撶殑寮曠敤銆 |
$column | string | 瑕佹洿鏀圭殑鍒楃殑鍚嶇О銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$type | string | 鏂板垪鐨勭被鍨嬨俫etColumnType 鏂规硶灏嗚瑙﹀彂杞崲鎶借薄鍒楃被鍨(鑻ユ湁) 涓哄疄闄呯被鍨嬨備换浣曟棤娉曡瘑鍒殑鎶借薄绫诲瀷灏嗚淇濇寔鍦ㄥ凡缁忕敓鎴愮殑SQL涓 渚嬪锛'string' 灏嗚杞崲鎴 'varchar(255)', 鍚屾椂 'string not null' 灏嗗彉鎴 'varchar(255) not null'銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function alterColumn($table, $column, $type)
{
return $this->setText($this->getConnection()->getSchema()->alterColumn($table, $column, $type))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓烘敼鍙樹竴涓垪鐨勫畾涔夈
public CDbCommand bindParam(mixed $name, mixed &$value, integer $dataType=NULL, integer $length=NULL, mixed $driverOptions=NULL)
| ||
$name | mixed | 鍙傛暟鏍囪瘑绗︺ 瀵逛簬涓涓娇鐢ㄥ懡鍚嶅崰浣嶇鐨勯鍑嗗璇彞锛岃繖灏嗘槸涓涓〃鍗曞悕绉板弬鏁:name銆 瀵逛簬涓涓娇鐢ㄩ棶鍙峰崰浣嶇鐨勯鍑嗗璇彞锛 杩欏皢鏄竴涓粠1寮濮嬬殑鍙傛暟浣嶇疆绱㈠紩銆 |
$value | mixed | 缁戝畾鍒癝QL璇彞鍙傛暟鐨凱HP鍙橀噺銆 |
$dataType | integer | 鍙傛暟鐨凷QL鏁版嵁绫诲瀷銆傚鏋滀负null锛屾绫诲瀷鐢盤HP鍊肩殑绫诲瀷鍐冲畾銆 |
$length | integer | 鏁版嵁绫诲瀷鐨勯暱搴 |
$driverOptions | mixed | 鎸囧畾鐨勯┍鍔ㄩ夐」(鑷増鏈1.1.6鍙敤) |
{return} | CDbCommand | 褰撳墠瑕佹墽琛岀殑鍛戒护 |
public function bindParam($name, &$value, $dataType=null, $length=null, $driverOptions=null)
{
$this->prepare();
if($dataType===null)
$this->_statement->bindParam($name,$value,$this->_connection->getPdoType(gettype($value)));
else if($length===null)
$this->_statement->bindParam($name,$value,$dataType);
else if($driverOptions===null)
$this->_statement->bindParam($name,$value,$dataType,$length);
else
$this->_statement->bindParam($name,$value,$dataType,$length,$driverOptions);
$this->_paramLog[$name]=&$value;
return $this;
}
缁戝畾涓涓弬鏁板埌瑕佹墽琛岀殑璇彞銆
public CDbCommand bindValue(mixed $name, mixed $value, integer $dataType=NULL)
| ||
$name | mixed | 鍙傛暟鏍囩绗︺ 瀵逛簬涓涓娇鐢ㄥ懡鍚嶅崰浣嶇鐨勯鍑嗗璇彞锛 杩欏皢鏄竴涓〃鍗曞悕绉板弬鏁:name锛 瀵逛簬涓涓娇鐢ㄩ棶鍙峰崰浣嶇鐨勯鍑嗗璇彞锛 杩欏皢鏄竴涓粠1寮濮嬬殑鍙傛暟浣嶇疆绱㈠紩銆 |
$value | mixed | 缁戝畾鍒版鍙傛暟鐨勫 |
$dataType | integer | 鍙傛暟鐨凷QL鏁版嵁绫诲瀷銆傚鏋滀负null锛屾绫诲瀷鐢盤HP鍊肩殑绫诲瀷鍐冲畾銆 |
{return} | CDbCommand | 褰撳墠瑕佹墽琛岀殑鍛戒护 |
public function bindValue($name, $value, $dataType=null)
{
$this->prepare();
if($dataType===null)
$this->_statement->bindValue($name,$value,$this->_connection->getPdoType(gettype($value)));
else
$this->_statement->bindValue($name,$value,$dataType);
$this->_paramLog[$name]=$value;
return $this;
}
缁戝畾涓涓煎埌鍙傛暟銆
public CDbCommand bindValues(array $values)
| ||
$values | array | 瑕佽缁戝畾鐨勫笺
杩欎釜蹇呴』鐢辩浉搴旂殑鏁扮粍閿粰瀹氬弬鏁板悕锛屾暟缁勫肩粰瀹氬弬鏁板笺
渚嬪锛 array(鈥:name鈥=>鈥楯ohn鈥, 鈥:age鈥=>25) . |
{return} | CDbCommand | 杩斿洖褰撳墠灏嗘墽琛岀殑鍛戒护 |
public function bindValues($values)
{
$this->prepare();
foreach($values as $name=>$value)
{
$this->_statement->bindValue($name,$value,$this->_connection->getPdoType(gettype($value)));
$this->_paramLog[$name]=$value;
}
return $this;
}
灏嗕竴涓垪琛ㄧ殑鍊肩粦瀹氬埌鐩稿簲鍙傛暟銆 闄や簡缁戝畾澶氫釜鍊煎锛岃繖涓拰 bindValue 鏄浉浼肩殑銆 娉ㄦ剰姣忎釜鍊肩殑SQL鏁版嵁绫诲瀷鏄敱PHP绫诲瀷鍐冲畾銆
public string buildQuery(array $query)
| ||
$query | array | 鍚嶇О-鍊煎鏌ヨ瑙勮寖銆 涓嬮潰鐨勬煡璇㈤夐」琚敮鎸併傦細select锛distinct锛from锛 where锛join, group, having, order锛 limit锛offset 鍜 union銆 |
{return} | string | 杩斿洖SQL璇彞 |
public function buildQuery($query)
{
$sql=isset($query['distinct']) && $query['distinct'] ? 'SELECT DISTINCT' : 'SELECT';
$sql.=' '.(isset($query['select']) ? $query['select'] : '*');
if(isset($query['from']))
$sql.="\nFROM ".$query['from'];
else
throw new CDbException(Yii::t('yii','The DB query must contain the "from" portion.'));
if(isset($query['join']))
$sql.="\n".(is_array($query['join']) ? implode("\n",$query['join']) : $query['join']);
if(isset($query['where']))
$sql.="\nWHERE ".$query['where'];
if(isset($query['group']))
$sql.="\nGROUP BY ".$query['group'];
if(isset($query['having']))
$sql.="\nHAVING ".$query['having'];
if(isset($query['order']))
$sql.="\nORDER BY ".$query['order'];
$limit=isset($query['limit']) ? (int)$query['limit'] : -1;
$offset=isset($query['offset']) ? (int)$query['offset'] : -1;
if($limit>=0 || $offset>0)
$sql=$this->_connection->getCommandBuilder()->applyLimit($sql,$limit,$offset);
if(isset($query['union']))
$sql.="\nUNION (\n".(is_array($query['union']) ? implode("\n) UNION (\n",$query['union']) : $query['union']) . ')';
return $sql;
}
鐢熸垚涓涓猄QL SELECT璇彞浠庣粰瀹氭煡璇㈣鑼冦
public void cancel()
|
鍙栨秷SQL璇彞鐨勬墽琛屻
public integer createIndex(string $name, string $table, string $column, boolean $unique=false)
| ||
$name | string | 绱㈠紩鐨勫悕绉般傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$table | string | 瑕佷负鍏跺垱寤烘柊绱㈠紩鐨勮〃銆傝〃鍚嶅皢杩欎釜鏂规硶鎭板綋鐨勫紩鐢ㄣ |
$column | string | 琚寘鍚湪绱㈠紩涓殑鍒椼傚鏋滄湁澶氬垪锛岃鐢ㄩ楀彿鍒嗗紑瀹冧滑銆 姝ゅ垪鍚嶅皢琚鏂规硶鎭板綋鐨勫紩鐢ㄣ |
$unique | boolean | 鏄惁鍦ㄥ垱寤虹储寮曟椂澧炲姞UNIQUE绾︽潫銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function createIndex($name, $table, $column, $unique=false)
{
return $this->setText($this->getConnection()->getSchema()->createIndex($name, $table, $column, $unique))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垱寤轰竴涓柊绱㈠紩銆
public integer createTable(string $table, array $columns, string $options=NULL)
| ||
$table | string | 琚垱寤虹殑琛ㄧ殑鍚嶇О銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$columns | array | 鏂拌〃涓殑鍒(name=>definition)銆 |
$options | string | 棰濆鐨凷QL鐗囨锛屽皢闄勫姞鍒扮敓鎴愮殑SQL涓 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function createTable($table, $columns, $options=null)
{
return $this->setText($this->getConnection()->getSchema()->createTable($table, $columns, $options))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垱寤轰竴涓暟鎹〃銆
搴斿皢鏂拌〃涓殑鍒楁寚瀹氫负鍚嶇О-瀹氫箟瀵(渚嬪'name'=>'string'),
杩欓噷 name 浠h〃涓涓垪鍚嶏紝瀹冨皢琚繖涓柟娉曟伆褰撶殑寮曠敤锛岃 definition
浠h〃鍒楃殑绫诲瀷锛屽畠鑳藉寘鍚竴涓娊璞$殑DB绫诲瀷銆
getColumnType 鏂规硶灏嗚瑙﹀彂杞崲浠讳綍鎶借薄绫诲瀷涓轰竴涓疄闄呯被鍨嬨
濡傛灉浠呮寚瀹氫簡鍒楃殑瀹氫箟(渚嬪 'PRIMARY KEY (name, type)')锛屽畠灏嗚鐩存帴鎻掑叆
鐢熸垚鐨 SQL涓
public CDbCommand crossJoin(string $table)
| ||
$table | string | 瑕佽杩炴帴鐨勮〃銆 琛ㄥ彲鍖呭惈schema鍓嶇紑(渚嬪 鈥榩ublic.tbl_user鈥)鍜/鎴 琛ㄥ埆鍚 (渚嬪 鈥榯bl_user u鈥)銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝よ〃鍚嶏紝闄ら潪瀹冨寘鍚竴浜涘渾鎷彿 (杩欐剰鍛崇潃姝よ〃琚粰瀹氫綔涓轰竴涓瓙鏌ヨ鎴朌B琛ㄨ揪寮)銆 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function crossJoin($table)
{
return $this->joinInternal('cross join', $table);
}
闄勫姞涓涓狢ROSS JOIN閮ㄥ垎鍒版鏌ヨ銆 娉ㄦ剰涓嶆槸鎵鏈夌殑DBMS閮芥敮鎸丆ROSS JOIN.
public integer delete(string $table, mixed $conditions='', array $params=array (
))
| ||
$table | string | 鏁版嵁灏嗚琚垹闄ょ殑琛ㄣ |
$conditions | mixed | 灏嗚鏀惧叆WHERE 閮ㄥ垎鐨勬潯浠躲 璇峰弬鑰where鍏充簬鎬庢牱鎸囧畾鏉′欢銆 |
$params | array | 琚粦瀹氬埌鏌ヨ鐨勫弬鏁般 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function delete($table, $conditions='', $params=array())
{
$sql='DELETE FROM ' . $this->_connection->quoteTableName($table);
if(($where=$this->processConditions($conditions))!='')
$sql.=' WHERE '.$where;
return $this->setText($sql)->execute($params);
}
鍒涘缓骞舵墽琛屼竴鏉 DELETE SQL 璇彞銆
public integer dropColumn(string $table, string $column)
| ||
$table | string | 鍒楀皢琚垹闄ょ殑琛紝姝ゅ悕绉板皢琚鏂规硶鎭板綋鐨勫紩鐢ㄣ |
$column | string | 灏嗚鍒犻櫎鐨勫垪鐨勫悕绉般傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function dropColumn($table, $column)
{
return $this->setText($this->getConnection()->getSchema()->dropColumn($table, $column))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垹闄や竴涓暟鎹垪銆
public integer dropForeignKey(string $name, string $table)
| ||
$name | string | 瑕佽鍒犻櫎鐨勫閿害鏉熷悕绉般傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$table | string | 瑕佽鍒犻櫎鐨勫閿殑琛ㄣ傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function dropForeignKey($name, $table)
{
return $this->setText($this->getConnection()->getSchema()->dropForeignKey($name, $table))->execute();
}
寤虹珛涓鏉QL璇彞涓哄垹闄や竴涓閿害鏉熴
public integer dropIndex(string $name, string $table)
| ||
$name | string | 瑕佸垹闄ょ殑绱㈠紩鍚嶇О銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$table | string | 绱㈠紩瑕佽鍒犻櫎鐨勮〃銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function dropIndex($name, $table)
{
return $this->setText($this->getConnection()->getSchema()->dropIndex($name, $table))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垹闄や竴涓储寮曘
public integer dropTable(string $table)
| ||
$table | string | 瑕佸垹闄ょ殑琛ㄣ傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function dropTable($table)
{
return $this->setText($this->getConnection()->getSchema()->dropTable($table))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓哄垹闄や竴涓暟鎹〃
public integer execute(array $params=array (
))
| ||
$params | array | 涓篠QL鎵ц鐨勮緭鍏ュ弬鏁 (name=>value)銆 瀵逛簬bindParam 鍜 bindValue杩欐槸浜岄変竴鐨勩 濡傛灉浣犳湁澶氫釜杈撳叆鍙傛暟锛岀敤杩欑鏂瑰紡浼犻掍粬浠兘鎻愰珮鎬ц兘銆 娉ㄦ剰锛屽鏋滀綘鐢ㄨ繖绉嶆柟寮忎紶閫掑弬鏁帮紝浣犱笉鑳戒娇鐢 bindParam鎴栬bindValue缁戝畾鍙傛暟鎴栧硷紝 鍙嶄箣浜︾劧锛岃繖鏍峰彲浠ユ彁楂樻ц兘銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function execute($params=array())
{
if($this->_connection->enableParamLogging && ($pars=array_merge($this->_paramLog,$params))!==array())
{
$p=array();
foreach($pars as $name=>$value)
$p[$name]=$name.'='.var_export($value,true);
$par='. Bound with ' .implode(', ',$p);
}
else
$par='';
Yii::trace('Executing SQL: '.$this->getText().$par,'system.db.CDbCommand');
try
{
if($this->_connection->enableProfiling)
Yii::beginProfile('system.db.CDbCommand.execute('.$this->getText().')','system.db.CDbCommand.execute');
$this->prepare();
if($params===array())
$this->_statement->execute();
else
$this->_statement->execute($params);
$n=$this->_statement->rowCount();
if($this->_connection->enableProfiling)
Yii::endProfile('system.db.CDbCommand.execute('.$this->getText().')','system.db.CDbCommand.execute');
return $n;
}
catch(Exception $e)
{
if($this->_connection->enableProfiling)
Yii::endProfile('system.db.CDbCommand.execute('.$this->getText().')','system.db.CDbCommand.execute');
$errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
$message = $e->getMessage();
Yii::log(Yii::t('yii','CDbCommand::execute() failed: {error}. The SQL statement executed was: {sql}.',
array('{error}'=>$message, '{sql}'=>$this->getText().$par)),CLogger::LEVEL_ERROR,'system.db.CDbCommand');
if(YII_DEBUG)
$message .= '. The SQL statement executed was: '.$this->getText().$par;
throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}',
array('{error}'=>$message)),(int)$e->getCode(),$errorInfo);
}
}
鎵ц姝 SQL 璇彞銆 姝ゆ柟娉曟剰鍛崇潃鍙墽琛 non-query SQL 璇彞銆 灏嗕笉杩斿洖缁撴灉闆嗐
public CDbCommand from(mixed $tables)
| ||
$tables | mixed | from閫夋嫨鐨勮〃锛堝彲鑳芥槸澶氫釜锛夈傝繖涓彲鑳芥槸涓涓瓧绗︿覆(渚嬪 'tbl_user') 鎴栦竴涓暟缁 (渚嬪 array('tbl_user', 'tbl_profile')) 鎸囧畾涓涓垨澶氫釜琛ㄥ悕銆 琛ㄥ悕鑳藉寘鍚玸chema鍓嶇紑 (渚嬪 'public.tbl_user') 鍜/鎴 琛ㄥ埆鍚 (渚嬪 'tbl_user u'). 姝ゆ柟娉曞皢鑷姩鐨勫紩鐢ㄦ琛ㄥ悕锛岄櫎闈炲畠鍖呭惈涓浜涘渾鎷彿 (杩欐剰鍛崇潃姝よ〃琚粰瀹氫綔涓轰竴涓瓙鏌ヨ鎴朌B琛ㄨ揪寮). |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function from($tables)
{
if(is_string($tables) && strpos($tables,'(')!==false)
$this->_query['from']=$tables;
else
{
if(!is_array($tables))
$tables=preg_split('/\s*,\s*/',trim($tables),-1,PREG_SPLIT_NO_EMPTY);
foreach($tables as $i=>$table)
{
if(strpos($table,'(')===false)
{
if(preg_match('/^(.*?)(?i:\s+as\s+|\s+)(.*)$/',$table,$matches)) // with alias
$tables[$i]=$this->_connection->quoteTableName($matches[1]).' '.$this->_connection->quoteTableName($matches[2]);
else
$tables[$i]=$this->_connection->quoteTableName($table);
}
}
$this->_query['from']=implode(', ',$tables);
}
return $this;
}
璁剧疆鏌ヨ鐨凢ROM閮ㄥ垎銆
public CDbConnection getConnection()
| ||
{return} | CDbConnection | 鍜岃繖涓懡浠ょ浉鍏崇殑杩炴帴銆 |
public function getConnection()
{
return $this->_connection;
}
public boolean getDistinct()
| ||
{return} | boolean | 杩斿洖涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ |
public function getDistinct()
{
return isset($this->_query['distinct']) ? $this->_query['distinct'] : false;
}
杩斿洖涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ
public string getFrom()
| ||
{return} | string | 鏌ヨ鐨凢ROM閮ㄥ垎(娌℃湁 'FROM' )銆 |
public function getFrom()
{
return isset($this->_query['from']) ? $this->_query['from'] : '';
}
杩斿洖鏌ヨ鐨 FROM 閮ㄥ垎銆
public string getGroup()
| ||
{return} | string | 杩斿洖鏌ヨ涓殑 GROUP BY 閮ㄥ垎 (娌℃湁 鈥楪ROUP BY鈥 )銆 |
public function getGroup()
{
return isset($this->_query['group']) ? $this->_query['group'] : '';
}
杩斿洖鏌ヨ涓殑 GROUP BY 閮ㄥ垎銆
public string getHaving()
| ||
{return} | string | 杩斿洖鏌ヨ鐨凥AVING閮ㄥ垎(娌℃湁 'HAVING' ) 銆 |
public function getHaving()
{
return isset($this->_query['having']) ? $this->_query['having'] : '';
}
杩斿洖鏌ヨ鐨凥AVING閮ㄥ垎銆
public mixed getJoin()
| ||
{return} | mixed | 鏌ヨ鐨刯oin銆 杩欎釜鍙互鏄竴涓暟缁勮〃绀哄涓猨oin鐗囨柇锛屾垨涓涓瓧绗︿覆琛ㄧず鍗曚釜join鐗囨柇銆 姣忎竴涓猨oin鐗囨柇灏嗗寘鍚伆褰撶殑join鎿嶄綔绗(渚嬪 LEFT JOIN)銆 |
public function getJoin()
{
return isset($this->_query['join']) ? $this->_query['join'] : '';
}
杩斿洖鏌ヨ鐨刯oin閮ㄥ垎銆
public string getLimit()
| ||
{return} | string | 杩斿洖鏌ヨ鐨 LIMIT 閮ㄥ垎锛堟病鏈 'LIMIT'锛夈 |
public function getLimit()
{
return isset($this->_query['limit']) ? $this->_query['limit'] : -1;
}
杩斿洖鏌ヨ鐨 LIMIT 閮ㄥ垎銆
public string getOffset()
| ||
{return} | string | 鏌ヨ鐨凮FFSET閮ㄥ垎(娌℃湁'OFFSET' )銆 |
public function getOffset()
{
return isset($this->_query['offset']) ? $this->_query['offset'] : -1;
}
杩斿洖鏌ヨ鐨 OFFSET 閮ㄥ垎銆
public string getOrder()
| ||
{return} | string | 杩斿洖鏌ヨ涓殑ORDER BY閮ㄥ垎(娌℃湁 'ORDER BY' )銆 |
public function getOrder()
{
return isset($this->_query['order']) ? $this->_query['order'] : '';
}
杩斿洖鏌ヨ鐨 ORDER BY 閮ㄥ垎銆
public PDOStatement getPdoStatement()
| ||
{return} | PDOStatement | 杩欎釜鍛戒护搴曞眰鐨凱DOStatement 濡傛灉灏氭湭鍑嗗濂借鍙ワ紝瀹冨彲浠ユ槸null銆 |
public function getPdoStatement()
{
return $this->_statement;
}
public string getSelect()
| ||
{return} | string | 鏌ヨ鐨凷ELECT閮ㄥ垎(娌℃湁'SELECT') |
public function getSelect()
{
return isset($this->_query['select']) ? $this->_query['select'] : '';
}
杩斿洖鏌ヨ鐨凷ELECT閮ㄥ垎銆
public string getText()
| ||
{return} | string | 杩斿洖灏嗚鎵ц鐨凷QL璇彞銆 |
public function getText()
{
if($this->_text=='' && !empty($this->_query))
$this->setText($this->buildQuery($this->_query));
return $this->_text;
}
public mixed getUnion()
| ||
{return} | mixed | 鏌ヨ鐨刄NION閮ㄥ垎(娌℃湁'UNION' )銆 瀹冨彲浠ユ槸涓涓瓧绗︿覆鎴栦竴涓暟缁勶紙琛ㄧず澶氫釜union锛夐儴鍒嗐 |
public function getUnion()
{
return isset($this->_query['union']) ? $this->_query['union'] : '';
}
杩斿洖鏌ヨ鐨 UNION 閮ㄥ垎銆
public string getWhere()
| ||
{return} | string | 鏌ヨ鐨刉HERE閮ㄥ垎 (娌℃湁 'WHERE' )銆 |
public function getWhere()
{
return isset($this->_query['where']) ? $this->_query['where'] : '';
}
杩斿洖鏌ヨ鐨刉HERE閮ㄥ垎銆
public CDbCommand group(mixed $columns)
| ||
$columns | mixed | 灏嗚鍒嗙粍鐨勫垪銆 琚寚瀹氱殑鍒楀彲鑳芥槸涓涓瓧绗︿覆(渚嬪 "id, name")鎴栬呬竴涓暟缁(渚嬪 array('id', 'name')). 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝ゅ垪鍚嶏紝闄ら潪涓涓垪鍖呭惈涓浜涘渾鎷彿锛 (杩欐剰鍛崇潃姝ゅ垪鍖呭惈涓涓狣B琛ㄨ揪寮)銆 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function group($columns)
{
if(is_string($columns) && strpos($columns,'(')!==false)
$this->_query['group']=$columns;
else
{
if(!is_array($columns))
$columns=preg_split('/\s*,\s*/',trim($columns),-1,PREG_SPLIT_NO_EMPTY);
foreach($columns as $i=>$column)
{
if(is_object($column))
$columns[$i]=(string)$column;
else if(strpos($column,'(')===false)
$columns[$i]=$this->_connection->quoteColumnName($column);
}
$this->_query['group']=implode(', ',$columns);
}
return $this;
}
璁剧疆鏌ヨ鐨 GROUP BY 閮ㄥ垎銆
public CDbCommand having(mixed $conditions, array $params=array (
))
| ||
$conditions | mixed | 鏀惧湪HAVING鍚庣殑鏉′欢銆 璇峰弬鑰where鍏充簬鎬庢牱鎸囧畾鏉′欢銆 |
$params | array | 缁戝畾鍒版鏌ヨ鐨勫弬鏁 (name=>value) |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function having($conditions, $params=array())
{
$this->_query['having']=$this->processConditions($conditions);
foreach($params as $name=>$value)
$this->params[$name]=$value;
return $this;
}
璁剧疆鏌ヨ鐨 HAVING 閮ㄥ垎銆
public integer insert(string $table, array $columns)
| ||
$table | string | 灏嗚鎻掑叆鐨勮〃銆 |
$columns | array | 瑕佹彃鍏ヨ〃鐨勫垪鏁版嵁(name=>value)銆 |
{return} | integer | 杩斿洖姝ゆ墽琛屽奖鍝嶇殑琛屾暟銆 |
public function insert($table, $columns)
{
$params=array();
$names=array();
$placeholders=array();
foreach($columns as $name=>$value)
{
$names[]=$this->_connection->quoteColumnName($name);
if($value instanceof CDbExpression)
{
$placeholders[] = $value->expression;
foreach($value->params as $n => $v)
$params[$n] = $v;
}
else
{
$placeholders[] = ':' . $name;
$params[':' . $name] = $value;
}
}
$sql='INSERT INTO ' . $this->_connection->quoteTableName($table)
. ' (' . implode(', ',$names) . ') VALUES ('
. implode(', ', $placeholders) . ')';
return $this->setText($sql)->execute($params);
}
鍒涘缓鍜屾墽琛屼竴涓猄QL璇彞銆 璇ユ柟娉曞皢鎭板綋鐨勮浆涔夊垪鍚嶏紝骞剁粦瀹氳鎻掑叆鐨勫笺
public CDbCommand join(string $table, mixed $conditions, array $params=array (
))
| ||
$table | string | 瑕佽杩炴帴鐨勮〃銆 琛ㄥ彲鍖呭惈schema鍓嶇紑(渚嬪 'public.tbl_user')鍜/鎴 琛ㄥ埆鍚 (渚嬪 'tbl_user u')銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝よ〃鍚嶏紝闄ら潪瀹冨寘鍚竴浜涘渾鎷彿 (杩欐剰鍛崇潃姝よ〃琚粰瀹氫綔涓轰竴涓瓙鏌ヨ鎴朌B琛ㄨ揪寮)銆 |
$conditions | mixed | 鍑虹幇鍦∣N閮ㄥ垎鐨刯oin鏉′欢銆 璇峰弬鑰where鍏充簬鎬庢牱鎸囧畾鏉′欢銆 |
$params | array | 缁戝畾鍒版鏌ヨ鐨勫弬鏁 (name=>value) |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function join($table, $conditions, $params=array())
{
return $this->joinInternal('join', $table, $conditions, $params);
}
闄勫姞涓涓狪NNER JOIN閮ㄥ垎鍒版鏌ヨ銆
public CDbCommand leftJoin(string $table, mixed $conditions, array $params=array (
))
| ||
$table | string | 瑕佽杩炴帴鐨勮〃銆 琛ㄥ彲鍖呭惈schema鍓嶇紑(渚嬪 鈥榩ublic.tbl_user鈥)鍜/鎴 琛ㄥ埆鍚 (渚嬪 鈥榯bl_user u鈥)銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝よ〃鍚嶏紝闄ら潪瀹冨寘鍚竴浜涘渾鎷彿 (杩欐剰鍛崇潃姝よ〃琚粰瀹氫綔涓轰竴涓瓙鏌ヨ鎴朌B琛ㄨ揪寮)銆 |
$conditions | mixed | 鍑虹幇鍦∣N閮ㄥ垎鐨刯oin鏉′欢銆 璇峰弬鑰where鍏充簬鎬庢牱鎸囧畾鏉′欢銆 |
$params | array | 缁戝畾鍒版鏌ヨ鐨勫弬鏁 (name=>value) |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function leftJoin($table, $conditions, $params=array())
{
return $this->joinInternal('left join', $table, $conditions, $params);
}
闄勫姞涓涓狶EFT OUTER JOIN閮ㄥ垎鍒版鏌ヨ銆
public CDbCommand limit(integer $limit, integer $offset=NULL)
| ||
$limit | integer | limit鍊 |
$offset | integer | offset鍊 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function limit($limit, $offset=null)
{
$this->_query['limit']=(int)$limit;
if($offset!==null)
$this->offset($offset);
return $this;
}
璁剧疆鏌ヨ鐨 LIMIT 閮ㄥ垎銆
public CDbCommand naturalJoin(string $table)
| ||
$table | string | 瑕佽杩炴帴鐨勮〃銆 琛ㄥ彲鍖呭惈schema鍓嶇紑(渚嬪 鈥榩ublic.tbl_user鈥)鍜/鎴 琛ㄥ埆鍚 (渚嬪 鈥榯bl_user u鈥)銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝よ〃鍚嶏紝闄ら潪瀹冨寘鍚竴浜涘渾鎷彿 (杩欐剰鍛崇潃姝よ〃琚粰瀹氫綔涓轰竴涓瓙鏌ヨ鎴朌B琛ㄨ揪寮)銆 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function naturalJoin($table)
{
return $this->joinInternal('natural join', $table);
}
闄勫姞涓涓狽ATURAL JOIN 閮ㄥ垎鍒版煡璇€ 娉ㄦ剰涓嶆槸鎵鏈夌殑DBMS閮芥敮鎸丯ATURAL JOIN.
public CDbCommand offset(integer $offset)
| ||
$offset | integer | offset鍊 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function offset($offset)
{
$this->_query['offset']=(int)$offset;
return $this;
}
璁剧疆鏌ヨ鐨 OFFSET 閮ㄥ垎銆
public CDbCommand order(mixed $columns)
| ||
$columns | mixed | 瑕佽鎺掑簭鐨勫垪(鍜屾柟鍚)銆 鎸囧畾鐨勫垪鎴栬呮槸涓涓瓧绗︿覆(渚嬪 "id ASC, name DESC")鎴栬呬竴涓暟缁(渚嬪 array('id ASC', 'name DESC'))銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝ゅ垪鍚嶏紝闄ら潪涓涓垪鍖呭惈涓浜涘渾鎷彿锛 (杩欐剰鍛崇潃姝ゅ垪鍖呭惈涓涓狣B琛ㄨ揪寮)銆 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function order($columns)
{
if(is_string($columns) && strpos($columns,'(')!==false)
$this->_query['order']=$columns;
else
{
if(!is_array($columns))
$columns=preg_split('/\s*,\s*/',trim($columns),-1,PREG_SPLIT_NO_EMPTY);
foreach($columns as $i=>$column)
{
if(is_object($column))
$columns[$i]=(string)$column;
else if(strpos($column,'(')===false)
{
if(preg_match('/^(.*?)\s+(asc|desc)$/i',$column,$matches))
$columns[$i]=$this->_connection->quoteColumnName($matches[1]).' '.strtoupper($matches[2]);
else
$columns[$i]=$this->_connection->quoteColumnName($column);
}
}
$this->_query['order']=implode(', ',$columns);
}
return $this;
}
璁剧疆姝ゆ煡璇㈢殑ORDER BY閮ㄥ垎銆
public void prepare()
|
public function prepare()
{
if($this->_statement==null)
{
try
{
$this->_statement=$this->getConnection()->getPdoInstance()->prepare($this->getText());
$this->_paramLog=array();
}
catch(Exception $e)
{
Yii::log('Error in preparing SQL: '.$this->getText(),CLogger::LEVEL_ERROR,'system.db.CDbCommand');
$errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
throw new CDbException(Yii::t('yii','CDbCommand failed to prepare the SQL statement: {error}',
array('{error}'=>$e->getMessage())),(int)$e->getCode(),$errorInfo);
}
}
}
鍑嗗瑕佹墽琛岀殑SQL璇彞銆 瀵逛簬瑕佸娆℃墽琛岀殑澶嶆潅鐨凷QL璇彞锛 杩欎釜鍙互鎻愰珮鎬ц兘銆 瀵逛簬缁戝畾浜嗗弬鏁扮殑SQL璇彞锛 杩欎釜鏂规硶浼氳鑷姩瑙﹀彂銆
public CDbDataReader query(array $params=array (
))
| ||
$params | array | 涓篠QL鎵ц鐨勮緭鍏ュ熀鏁 (name=>value)銆 杩欐槸bindParam 鍜 bindValue浜岄変竴鐨勩 濡傛灉浣犳湁澶氫釜杈撳叆鍙傛暟锛岀敤杩欑鏂瑰紡浼犻掑畠浠兘鎻愰珮鎬ц兘銆 娉ㄦ剰濡傛灉浣犵敤杩欑鏂瑰紡浼犻掑弬鏁帮紝浣犱笉鑳戒娇鐢 bindParam鎴 bindValue缁戝畾鍙傛暟鎴栧硷紝鍙嶄箣浜︾劧銆 缁戝畾鏂规硶鍜岃緭鍏ュ弬鏁帮紝杩欐牱鍙互鎻愰珮鎬ц兘銆 |
{return} | CDbDataReader | 鑾峰彇鏌ヨ缁撴灉鐨勮鍙栧櫒瀵硅薄 |
public function query($params=array())
{
return $this->queryInternal('',0,$params);
}
鎵цSQL璇彞骞惰繑鍥炴煡璇㈢粨鏋溿 姝ゆ柟娉曟墽琛岃繑鍥炵粨鏋滈泦鐨凷QL鏌ヨ銆
public array queryAll(boolean $fetchAssociative=true, array $params=array (
))
| ||
$fetchAssociative | boolean | 鏄惁姣忎竴琛屽簲璇ヨ浣滀负涓涓叧鑱旀暟缁勮繑鍥烇紝 鍏宠仈鏁扮粍鐨勫垪鍚嶄负閿垨鍒楃储寮曚綔涓洪敭锛堜粠0寮濮嬶級銆 |
$params | array | SQL鎵ц鐨勮緭鍏ュ弬鏁(name=>value)銆傝繖鏄 bindParam 鍜 bindValue浜岄変竴鐨勩傚鏋滀綘鏈夊涓緭鍏ュ弬鏁帮紝 鐢ㄨ繖绉嶆柟寮忎紶閫掑畠浠兘鎻愰珮鎬ц兘銆傛敞鎰忓鏋滀綘鐢ㄨ繖绉嶆柟寮忎紶閫掑弬鏁, 浣犱笉鑳戒娇鐢 bindParam鎴 bindValue缁戝畾鍙傛暟鎴栧硷紝鍙嶄箣浜︾劧銆 缁戝畾鏂规硶鍜岃緭鍏ュ弬鏁帮紝杩欐牱鍙互鎻愰珮鎬ц兘銆 |
{return} | array | 杩斿洖鏌ヨ缁撴灉涓殑鎵鏈夎銆傛瘡涓暟缁勫厓绱犳槸涓涓暟缁勶紝琛ㄧず涓琛屻 濡傛灉鏌ヨ缁撴灉涓虹┖锛岃繑鍥炵┖鏁扮粍銆 |
public function queryAll($fetchAssociative=true,$params=array())
{
return $this->queryInternal('fetchAll',$fetchAssociative ? $this->_fetchMode : PDO::FETCH_NUM, $params);
}
鎵цSQL璇彞骞惰繑鍥炴墍鏈夎銆
public array queryColumn(array $params=array (
))
| ||
$params | array | SQL鎵ц鐨勮緭鍏ュ弬鏁(name=>value)銆傝繖鏄 bindParam鍜bindValue浜岄変竴鐨勩 濡傛灉浣犳湁澶氫釜杈撳叆鍙傛暟锛 鐢ㄨ繖绉嶆柟寮忎紶閫掑畠浠兘鎻愰珮鎬ц兘銆傛敞鎰忓鏋滀綘鐢ㄨ繖绉嶆柟寮忎紶閫掑弬鏁, 浣犱笉鑳戒娇鐢 bindParam鎴bindValue缁戝畾鍙傛暟鎴栧硷紝鍙嶄箣浜︾劧銆 缁戝畾鏂规硶鍜岃緭鍏ュ弬鏁帮紝杩欐牱鍙互鎻愰珮鎬ц兘銆 |
{return} | array | 杩斿洖鏌ヨ缁撴灉鐨勭涓鍒椼 濡傛灉娌℃湁缁撴灉涓虹┖鏁扮粍銆 |
public function queryColumn($params=array())
{
return $this->queryInternal('fetchAll',PDO::FETCH_COLUMN,$params);
}
鎵цSQL璇彞骞惰繑鍥炵粨鏋滅殑绗竴鍒椼 褰撳彧闇瑕佷竴涓肩殑鏃跺欙紝杩欎釜鏂规硶姣query鏇存柟渚匡紝 娉ㄦ剰锛岃繑鍥炵殑鍒楀皢鍖呭惈姣忎竴涓粨鏋滆鐨勭涓涓厓绱犮
public mixed queryRow(boolean $fetchAssociative=true, array $params=array (
))
| ||
$fetchAssociative | boolean | 鏄惁姣忎竴琛屽簲璇ヨ浣滀负涓涓叧鑱旀暟缁勮繑鍥烇紝 鍏宠仈鏁扮粍鐨勫垪鍚嶄负閿垨鍒楃储寮曚綔涓洪敭锛堜粠0寮濮嬶級銆 |
$params | array | SQL鎵ц鐨勮緭鍏ュ弬鏁 (name=>value)銆 杩欐槸 bindParam 鍜bindValue浜岄変竴鐨勩 濡傛灉浣犳湁澶氫釜杈撳叆鍙傛暟锛岀敤杩欑鏂瑰紡浼犻掑畠浠兘鎻愰珮鎬ц兘銆傛敞鎰忓鏋滀綘鐢ㄨ繖绉嶆柟寮忎紶閫掑弬鏁, 浣犱笉鑳戒娇鐢 bindParam鎴 bindValue缁戝畾鍙傛暟鎴栧硷紝鍙嶄箣浜︾劧銆 缁戝畾鏂规硶鍜岃緭鍏ュ弬鏁帮紝杩欐牱鍙互鎻愰珮鎬ц兘銆 |
{return} | mixed | the first row (in terms of an array) of the query result, false if no result. |
public function queryRow($fetchAssociative=true,$params=array())
{
return $this->queryInternal('fetch',$fetchAssociative ? $this->_fetchMode : PDO::FETCH_NUM, $params);
}
鎵ц姝QL璇彞骞惰繑鍥炵粨鏋滅殑绗竴琛屻 褰撳彧闇瑕佺涓琛屾暟鎹椂锛岃繖涓柟娉曟瘮query鏇存柟渚裤
public mixed queryScalar(array $params=array (
))
| ||
$params | array | SQL鎵ц鐨勮緭鍏ュ弬鏁 (name=>value)銆傝繖鏄 bindParam 鐨bindValue浜岄変竴鐨勩 濡傛灉浣犳湁澶氫釜杈撳叆鍙傛暟锛 鐢ㄨ繖绉嶆柟寮忎紶閫掑畠浠兘鎻愰珮鎬ц兘銆傛敞鎰忓鏋滀綘鐢ㄨ繖绉嶆柟寮忎紶閫掑弬鏁, 浣犱笉鑳戒娇鐢 bindParam鎴 bindValue缁戝畾鍙傛暟鎴栧硷紝鍙嶄箣浜︾劧銆 缁戝畾鏂规硶鍜岃緭鍏ュ弬鏁帮紝杩欐牱鍙互鎻愰珮鎬ц兘銆 |
{return} | mixed | 杩斿洖鏌ヨ缁撴灉鐨勭涓琛屾暟鎹殑绗竴鍒楃殑鍊笺傚鏋滄病鏈夊艰繑鍥濬alse銆 |
public function queryScalar($params=array())
{
$result=$this->queryInternal('fetchColumn',0,$params);
if(is_resource($result) && get_resource_type($result)==='stream')
return stream_get_contents($result);
else
return $result;
}
鎵ц姝QL璇彞骞惰繑鍥炵涓琛屾暟鎹殑绗竴鍒楃殑鍊笺 褰撳彧闇瑕佷竴涓肩殑鏃跺欙紝杩欎釜鏂规硶姣query鏇存柟渚匡紝 (渚嬪 鑾峰彇璁板綍鐨勬暟閲)銆
public integer renameColumn(string $table, string $name, string $newName)
| ||
$table | string | 鍒楀皢琚噸鍛藉悕鐨勮〃銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$name | string | 姝ゅ垪鐨勬棫琛ㄥ悕銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
$newName | string | 姝ゅ垪鐨勬柊鍚嶅瓧銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function renameColumn($table, $name, $newName)
{
return $this->setText($this->getConnection()->getSchema()->renameColumn($table, $name, $newName))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓洪噸鍛藉悕涓涓垪銆
public integer renameTable(string $table, string $newName)
| ||
$table | string | 瑕佽閲嶅懡鍚嶇殑琛ㄣ傛鍚嶇О灏嗚繖涓柟娉曟伆褰撶殑寮曠敤銆 |
$newName | string | 鏂扮殑琛ㄥ悕銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function renameTable($table, $newName)
{
return $this->setText($this->getConnection()->getSchema()->renameTable($table, $newName))->execute();
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓洪噸鍛藉悕涓涓暟鎹〃銆
public CDbCommand reset()
| ||
{return} | CDbCommand | 杩斿洖杩欎釜鍛戒护瀹炰緥 |
public function reset()
{
$this->_text=null;
$this->_query=null;
$this->_statement=null;
$this->_paramLog=array();
$this->params=array();
return $this;
}
娓呯悊鍛戒护锛屽苟鍑嗗寤虹珛涓涓柊鐨勬煡璇€ 杩欎釜鏂规硶涓昏鐢ㄤ綔褰撲竴涓懡浠ゅ璞¤澶氭閲嶇敤鏃讹紝 寤虹珛涓嶅悓鐨勬煡璇€ 璋冪敤姝ゆ柟娉曞皢娓呴櫎鎵鏈夊懡浠ゅ璞$殑鍐呴儴鐘舵併
public CDbCommand rightJoin(string $table, mixed $conditions, array $params=array (
))
| ||
$table | string | 瑕佽杩炴帴鐨勮〃銆 琛ㄥ彲鍖呭惈schema鍓嶇紑(渚嬪 鈥榩ublic.tbl_user鈥)鍜/鎴 琛ㄥ埆鍚 (渚嬪 鈥榯bl_user u鈥)銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝よ〃鍚嶏紝闄ら潪瀹冨寘鍚竴浜涘渾鎷彿 (杩欐剰鍛崇潃姝よ〃琚粰瀹氫綔涓轰竴涓瓙鏌ヨ鎴朌B琛ㄨ揪寮). |
$conditions | mixed | 鍑虹幇鍦∣N閮ㄥ垎鐨刯oin鏉′欢銆 璇峰弬鑰where鍏充簬鎬庢牱鎸囧畾鏉′欢銆 |
$params | array | 缁戝畾鍒版鏌ヨ鐨勫弬鏁 (name=>value) |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function rightJoin($table, $conditions, $params=array())
{
return $this->joinInternal('right join', $table, $conditions, $params);
}
闄勫姞涓涓猂IGHT OUTER JOIN閮ㄥ垎鍒版鏌ヨ銆
public CDbCommand select(mixed $columns='*', string $option='')
| ||
$columns | mixed | 琚夋嫨鐨勫垪銆 榛樿鍊间负 '*'锛屾剰鎬濇槸鎵鏈夌殑鍒椼 鍒楄兘琚竴涓瓧绗︿覆鎸囧畾(渚嬪 "id, name")鎴栦竴涓暟缁(渚嬪 array('id', 'name')). 鍒楄兘鍖呭惈琛ㄥ墠缂(渚嬪 "tbl_user.id") 鍜/鎴 鍒楀埆鍚(渚嬪 "tbl_user.id AS user_id")銆 杩欎釜鏂规硶灏嗚嚜鍔ㄧ殑寮曠敤姝ゅ垪鍚嶏紝闄ら潪涓涓垪鍖呭惈涓浜涘渾鎷彿 (杩欐剰鍛崇潃姝ゅ垪鍖呭惈涓涓狣B琛ㄨ揪寮). |
$option | string | 闄勫姞閫夋嫨搴旇琚檮鍔犲埌'SELECT'鍏抽敭瀛椼 渚嬪锛屽湪MySQL锛岄夐」'SQL_CALC_FOUND_ROWS'鑳借浣跨敤銆傝繖涓弬鏁拌嚜鐗堟湰1.1.8寮濮嬫敮鎸併 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function select($columns='*', $option='')
{
if(is_string($columns) && strpos($columns,'(')!==false)
$this->_query['select']=$columns;
else
{
if(!is_array($columns))
$columns=preg_split('/\s*,\s*/',trim($columns),-1,PREG_SPLIT_NO_EMPTY);
foreach($columns as $i=>$column)
{
if(is_object($column))
$columns[$i]=(string)$column;
else if(strpos($column,'(')===false)
{
if(preg_match('/^(.*?)(?i:\s+as\s+|\s+)(.*)$/',$column,$matches))
$columns[$i]=$this->_connection->quoteColumnName($matches[1]).' AS '.$this->_connection->quoteColumnName($matches[2]);
else
$columns[$i]=$this->_connection->quoteColumnName($column);
}
}
$this->_query['select']=implode(', ',$columns);
}
if($option!='')
$this->_query['select']=$option.' '.$this->_query['select'];
return $this;
}
璁剧疆鏌ヨ鐨凷ELECT閮ㄥ垎銆
public CDbCommand selectDistinct(mixed $columns='*')
| ||
$columns | mixed | 琚夋嫨鐨勫垪锛屽弬瑙select涓烘洿澶氫俊鎭 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function selectDistinct($columns='*')
{
$this->_query['distinct']=true;
return $this->select($columns);
}
璁剧疆姝ゆ煡璇㈢殑SELECT閮ㄥ垎锛屽甫鏈塂ISTINCT鏍囧織寮鍏炽 闄や簡DISTINCT鏍囧織寮鍏筹紝杩欎釜鍜select鏄竴鏍风殑銆
public void setDistinct(boolean $value)
| ||
$value | boolean | 涓涓兼寚绀烘槸鍚ELECT搴旇琚娇鐢ㄣ |
public function setDistinct($value)
{
$this->_query['distinct']=$value;
}
璁剧疆涓涓兼寚绀烘槸鍚ELECT DISTINCT搴旇琚娇鐢ㄣ
public CDbCommand setFetchMode(mixed $mode)
| ||
$mode | mixed | 璇诲彇妯″紡 |
{return} | CDbCommand |
public function setFetchMode($mode)
{
$params=func_get_args();
$this->_fetchMode = $params;
return $this;
}
璁剧疆姝よ鍙ョ殑榛樿璇诲彇妯″紡銆
public void setFrom(mixed $value)
| ||
$value | mixed | 琚夋嫨鐨勮〃銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰from()鏇村缁嗚妭銆 |
璁剧疆鏌ヨ鐨凢ROM閮ㄥ垎銆
public void setGroup(mixed $value)
| ||
$value | mixed | GROUP BY 閮ㄥ垎銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰 group() 鍏充簬鏇村缁嗚妭銆 |
璁剧疆鏌ヨ鐨 GROUP BY 閮ㄥ垎銆
public void setHaving(mixed $value)
| ||
$value | mixed | HAVING 閮ㄥ垎銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰having()鏇村缁嗚妭銆 |
public function setHaving($value)
{
$this->having($value);
}
璁剧疆鏌ヨ鐨 HAVING 閮ㄥ垎銆
public void setJoin(mixed $value)
| ||
$value | mixed | 鏌ヨ鐨刯oin閮ㄥ垎銆 杩欎釜鍙兘鏄竴涓瓧绗︿覆鎴栦竴涓暟缁勶紝浠h〃鏌ヨ涓涓猨oin閮ㄥ垎銆 姣忎竴閮ㄥ垎蹇呴』鍖呭惈鎭板綋鐨刯oin鍒朵綔绗(渚嬪 'LEFT JOIN tbl_profile ON tbl_user.id=tbl_profile.id') |
public function setJoin($value)
{
$this->_query['join']=$value;
}
璁剧疆鏌ヨ鐨刯oin閮ㄥ垎銆
public void setLimit(integer $value)
| ||
$value | integer | LIMIT 閮ㄥ垎銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰 limit() 涓烘洿澶氱粏鑺傘 |
public function setLimit($value)
{
$this->limit($value);
}
璁剧疆鏌ヨ鐨 LIMIT 閮ㄥ垎銆
public void setOffset(integer $value)
| ||
$value | integer | OFFSET 閮ㄥ垎銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰 offset() 涓烘洿澶氱粏鑺傘 |
public function setOffset($value)
{
$this->offset($value);
}
璁剧疆鏌ヨ鐨 OFFSET 閮ㄥ垎銆
public void setOrder(mixed $value)
| ||
$value | mixed | ORDER BY 閮ㄥ垎銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰 order() 涓烘洿澶氱粏鑺傘 |
public function setOrder($value)
{
$this->order($value);
}
璁剧疆鏌ヨ鐨 ORDER BY 閮ㄥ垎銆
public void setSelect(mixed $value)
| ||
$value | mixed | 琚夋嫨鐨勬暟鎹 璇峰弬鑰select()鎬庢牱鎸囧畾杩欎釜鍙傛暟鐨勬洿澶氱粏鑺傘 |
public function setSelect($value)
{
$this->select($value);
}
璁剧疆鐨凷ELECT閮ㄥ垎銆
public CDbCommand setText(string $value)
| ||
$value | string | 灏嗚鎵ц鐨凷QL璇彞 |
{return} | CDbCommand | 杩斿洖杩欎釜鍛戒护瀹炰緥 |
public function setText($value)
{
if($this->_connection->tablePrefix!==null && $value!='')
$this->_text=preg_replace('/{{(.*?)}}/',$this->_connection->tablePrefix.'\1',$value);
else
$this->_text=$value;
$this->cancel();
return $this;
}
鎸囧畾瑕佹墽琛岀殑SQL璇彞銆 涔嬪墠浠讳綍鏌ヨ閮戒細缁堟鎴栬呭彇娑堛
public void setUnion(mixed $value)
| ||
$value | mixed | UNION 閮ㄥ垎銆 杩欎釜鍙互鏄竴涓瓧绗︿覆鎴栦竴涓暟缁勮〃绀哄涓猄QL璇彞琚繛鎺ュ湪涓璧枫 |
public function setUnion($value)
{
$this->_query['union']=$value;
}
璁剧疆鏌ヨ鐨 UNION 閮ㄥ垎銆
public void setWhere(mixed $value)
| ||
$value | mixed | where 閮ㄥ垎銆 鍏充簬鎬庢牱鎸囧畾杩欎釜鍙傛暟璇峰弬鑰where()鏇村缁嗚妭銆 |
璁剧疆鏌ヨ鐨 WHERE 閮ㄥ垎銆
public integer truncateTable(string $table)
| ||
$table | string | 瑕佽娓呯┖鐨勮〃銆傛鍚嶇О灏嗚璇ユ柟娉曟伆褰撶殑寮曠敤銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function truncateTable($table)
{
$schema=$this->getConnection()->getSchema();
$n=$this->setText($schema->truncateTable($table))->execute();
if(strncasecmp($this->getConnection()->getDriverName(),'sqlite',6)===0)
$schema->resetSequence($schema->getTable($table));
return $n;
}
缁戝畾骞舵墽琛屼竴鏉QL璇彞涓烘竻绌轰竴涓暟鎹〃銆
public CDbCommand union(string $sql)
| ||
$sql | string | 浣跨敤UNION瑕侀檮鍔犵殑SQL璇彞銆 |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function union($sql)
{
if(isset($this->_query['union']) && is_string($this->_query['union']))
$this->_query['union']=array($this->_query['union']);
$this->_query['union'][]=$sql;
return $this;
}
闄勫姞涓涓猆NION鎿嶄綔绗﹀埌涓涓猄QL璇彞銆
public integer update(string $table, array $columns, mixed $conditions='', array $params=array (
))
| ||
$table | string | 瑕佹洿鏂扮殑琛ㄣ |
$columns | array | 瑕佹洿鏂扮殑鍒楁暟鎹 (name=>value) 銆 |
$conditions | mixed | 鏀惧叆 WHERE 閮ㄥ垎鐨勬潯浠躲 璇峰弬鑰 where 鎬庢牱鎸囧畾鏉′欢銆 |
$params | array | 瑕佺粦瀹氬埌姝ゆ煡璇㈢殑鍙傛暟銆 |
{return} | integer | 杩斿洖姝ゆ搷浣滃奖鍝嶇殑琛屾暟銆 |
public function update($table, $columns, $conditions='', $params=array())
{
$lines=array();
foreach($columns as $name=>$value)
{
if($value instanceof CDbExpression)
{
$lines[]=$this->_connection->quoteColumnName($name) . '=' . $value->expression;
foreach($value->params as $n => $v)
$params[$n] = $v;
}
else
{
$lines[]=$this->_connection->quoteColumnName($name) . '=:' . $name;
$params[':' . $name]=$value;
}
}
$sql='UPDATE ' . $this->_connection->quoteTableName($table) . ' SET ' . implode(', ', $lines);
if(($where=$this->processConditions($conditions))!='')
$sql.=' WHERE '.$where;
return $this->setText($sql)->execute($params);
}
鍒涘缓骞舵墽琛屼竴鏉PDATE SQL璇彞銆 璇ユ柟娉曞皢鎭板綋鐨勮浆涔夊垪鍚嶏紝骞剁粦瀹氳鏇存柊鐨勫笺
public CDbCommand where(mixed $conditions, array $params=array (
))
| ||
$conditions | mixed | 鏀惧湪WHERE閮ㄥ垎鐨勬潯浠躲 |
$params | array | 缁戝畾鍒版鏌ヨ鐨勫弬鏁 (name=>value) |
{return} | CDbCommand | 杩斿洖姝ゅ懡浠ゅ璞℃湰韬 |
public function where($conditions, $params=array())
{
$this->_query['where']=$this->processConditions($conditions);
foreach($params as $name=>$value)
$this->params[$name]=$value;
return $this;
}
璁剧疆鏌ヨ鐨刉HERE銆
杩欎釜鏂规硶瑕佹眰涓涓 $conditions 鍙傛暟鍜屼竴涓 $params 鍙傛暟锛
鎸囧畾鍊肩粦瀹氬埌鏌ヨ銆
$conditions 鍙傛暟鍙互鏄竴涓瓧绗︿覆(渚嬪 'id=1')鎴栦竴涓暟缁勩
濡傛灉鏄悗鑰咃紝瀹冨繀椤绘槸杩欑鏍煎紡 array(operator, operand1, operand2, ...)
,
鎿嶄綔绗﹀彲浠ユ槸涓嬮潰褰撲腑鐨勪竴涓紝鍙兘鐨勬搷浣滄暟渚濊禆浜庣浉搴旂殑鎿嶄綔绗
:
and
: 鎿嶄綔鏁板簲璇ヤ娇鐢ˋND杩炴帴璧锋潵銆備緥濡傦紝 array('and', 'id=1', 'id=2') 灏嗙敓鎴 'id=1 AND id=2'銆傚鏋滀竴涓搷浣滄暟鏄竴涓暟缁勶紝 瀹冨皢琚娇鐢ㄨ繖閲屾弿杩扮殑鐩稿悓瑙勫垯杞崲鎴愪竴涓瓧绗︿覆銆備緥濡傦紝 array('and', 'type=1', array('or', 'id=1', 'id=2')) 灏嗙敓鎴 'type=1 AND (id=1 OR id=2)'銆 璇ユ柟娉曞皢涓嶅仛浠讳綍寮曠敤鎴栬浆涔夈or
: 鍜and
鎿嶄綔绗︾浉浼硷紝闄や簡鎿嶄綔鏁版槸浣跨敤OR杩炴帴璧锋潵銆in
: 鎿嶄綔鏁1搴旇鏄竴鍒楁垨DB琛ㄨ揪寮忥紝鎿嶄綔鏁2搴旇鏄竴涓暟缁勶紝 琛ㄧず鐩稿簲鐨勫垪鐨勫兼垨DB琛ㄨ揪寮忓簲璇ュ湪鐨勮寖鍥淬備緥濡傦紝 array('in', 'id', array(1,2,3)) 灏嗙敓鎴 'id IN (1,2,3)'. 杩欎釜鏂规硶灏嗘纭殑寮曠敤鍒楀悕鍜岃寖鍥翠腑鐨勮浆涔夊笺not in
: 鍜in
鐩镐技锛岄櫎浜嗗湪鐢熸垚鏉′欢鏃舵妸IN鏇挎崲鎴怤OT IN.like
: 鎿嶄綔鏁1搴旇鏄竴鍒楁垨涓涓狣B琛ㄨ揪寮忥紝鎿嶄綔鏁帮紥鏄竴涓瓧绗︿覆鎴栦竴涓暟缁 琛ㄧず鍒楁垨DB琛ㄨ揪寮忓簲璇ike鐨勫笺 渚嬪锛 array('like', 'name', '%tester%') 灏嗙敓鎴 "name LIKE '%tester%'". 褰撳艰寖鍥磋缁欏畾涓轰竴涓暟缁勶紝澶氫釜LIKE璋撹灏嗚鐢熸垚骞朵娇鐢ˋND杩炴帴璧锋潵銆 渚嬪锛 array('like', 'name', array('%test%', '%sample%')) 灏嗙敓鎴 "name LIKE '%test%' AND name LIKE '%sample%'". 杩欎釜鏂规硶灏嗘纭殑寮曠敤鍒楀悕鍜岃寖鍥翠腑鐨勮浆涔夊笺not like
: 鍜like
鐩镐技锛岄櫎浜嗗湪鐢熸垚鏉′欢鏃朵娇鐢∟OT LIKE鏇挎崲LIKE銆or like
: 鍜like
鐩镐技锛岄櫎浜哋R琚敤浣滄妸LIKE璋撹杩炴帴璧锋潵銆or not like
: 鍜not like
鐩镐技锛岄櫎浜哋R琚敤浣滄妸NOT LIKE璋撹杩炴帴璧锋潵銆