COciCommandBuilder
优质
小牛编辑
134浏览
2023-12-01
所有包 | 属性 | 方法
COciCommandBuilder提供为数据表创建查询语句的基本方法。
源码: framework/db/schema/oci/COciCommandBuilder.php#43 (显示)
源码: framework/db/schema/oci/COciCommandBuilder.php#81 (显示)
源码: framework/db/schema/oci/COciCommandBuilder.php#30 (显示)
包 | system.db.schema.oci |
---|---|
继承 | class COciCommandBuilder » CDbCommandBuilder » CComponent |
版本 | $Id: COciCommandBuilder.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 | framework/db/schema/oci/COciCommandBuilder.php |
公共属性
隐藏继承属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
dbConnection | CDbConnection | database connection. | CDbCommandBuilder |
returnID | integer | 最后一次插入ID。 | COciCommandBuilder |
schema | CDbSchema | the schema for this command builder. | CDbCommandBuilder |
公共方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__construct() | CDbCommandBuilder | |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
applyCondition() | Alters the SQL to apply WHERE clause. | CDbCommandBuilder |
applyGroup() | Alters the SQL to apply GROUP BY. | CDbCommandBuilder |
applyHaving() | Alters the SQL to apply HAVING. | CDbCommandBuilder |
applyJoin() | Alters the SQL to apply JOIN clause. | CDbCommandBuilder |
applyLimit() | 改变SQL语句以应用LIMIT和OFFSET。 | COciCommandBuilder |
applyOrder() | Alters the SQL to apply ORDER BY. | CDbCommandBuilder |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
bindValues() | Binds parameter values for an SQL command. | CDbCommandBuilder |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
createColumnCriteria() | Creates a query criteria with the specified column values. | CDbCommandBuilder |
createCountCommand() | Creates a COUNT(*) command for a single table. | CDbCommandBuilder |
createCriteria() | Creates a query criteria. | CDbCommandBuilder |
createDeleteCommand() | Creates a DELETE command. | CDbCommandBuilder |
createFindCommand() | Creates a SELECT command for a single table. | CDbCommandBuilder |
createInCondition() | Generates the expression for selecting rows of specified primary key values. | CDbCommandBuilder |
createInsertCommand() | 创建INSERT命令。 | COciCommandBuilder |
createPkCondition() | Generates the expression for selecting rows of specified primary key values. | CDbCommandBuilder |
createPkCriteria() | Creates a query criteria with the specified primary key. | CDbCommandBuilder |
createSearchCondition() | Generates the expression for searching the specified keywords within a list of columns. | CDbCommandBuilder |
createSqlCommand() | Creates a command based on a given SQL statement. | CDbCommandBuilder |
createUpdateCommand() | Creates an UPDATE command. | CDbCommandBuilder |
createUpdateCounterCommand() | Creates an UPDATE command that increments/decrements certain columns. | CDbCommandBuilder |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaluateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getDbConnection() | 返回database connection. | CDbCommandBuilder |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getLastInsertID() | 返回指定表的最后一次插入ID。 | COciCommandBuilder |
getSchema() | 返回the schema for this command builder. | CDbCommandBuilder |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
受保护方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
createCompositeInCondition() | Generates the expression for selecting rows with specified composite key values. | CDbCommandBuilder |
ensureTable() | Checks if the parameter is a valid table schema. | CDbCommandBuilder |
属性详细
returnID 属性 public integer $returnID;最后一次插入ID。
方法详细
applyLimit() 方法public string applyLimit(string $sql, integer $limit, integer $offset) | ||
$sql | string | 没有LIMIT和OFFSET的SQL查询字符串。 |
$limit | integer | 最大行数,若为-1则忽略limit。 |
$offset | integer | 行位移,若为-1则忽略offset。 |
{return} | string | 带有LIMIT和OFFSET的SQL。 |
publicfunctionapplyLimit($sql,$limit,$offset)
{
if(($limit<0)and($offset<0))return$sql;
$filters=array();
if($offset>0){
$filters[]='rowNumId>'.(int)$offset;
}
if($limit>=0){
$filters[]='rownum<='.(int)$limit;
}
if(count($filters)>0){
$filter=implode('and',$filters);
$filter="WHERE".$filter;
}else{
$filter='';
}
$sql=<<<EOD
WITHUSER_SQLAS({$sql}),
PAGINATIONAS(SELECTUSER_SQL.*,rownumasrowNumIdFROMUSER_SQL)
SELECT*
FROMPAGINATION
{$filter}
EOD;
return$sql;
}
改变SQL语句以应用LIMIT和OFFSET。 默认实现适用于PostgreSQL、MySQL和SQLite。
createInsertCommand() 方法public CDbCommand createInsertCommand(mixed $table, array $data) | ||
$table | mixed | 表结构(CDbTableSchema)或者表名(字符串)。 |
$data | array | 要插入的数据(列名=>列值)。若某键不是一个有效的列名,则相应的值会被忽略。 |
{return} | CDbCommand | insert命令 |
publicfunctioncreateInsertCommand($table,$data)
{
$this->ensureTable($table);
$fields=array();
$values=array();
$placeholders=array();
$i=0;
foreach($dataas$name=>$value)
{
if(($column=$table->getColumn($name))!==null&&($value!==null||$column->allowNull))
{
$fields[]=$column->rawName;
if($valueinstanceofCDbExpression)
{
$placeholders[]=$value->expression;
foreach($value->paramsas$n=>$v)
$values[$n]=$v;
}
else
{
$placeholders[]=self::PARAM_PREFIX.$i;
$values[self::PARAM_PREFIX.$i]=$column->typecast($value);
$i++;
}
}
}
$sql="INSERTINTO{$table->rawName}(".implode(',',$fields).')VALUES('.implode(',',$placeholders).')';
if(is_string($table->primaryKey)&&($column=$table->getColumn($table->primaryKey))!==null&&$column->type!=='string')
{
$sql.='RETURNING'.$column->rawName.'INTO:RETURN_ID';
$command=$this->getDbConnection()->createCommand($sql);
$command->bindParam(':RETURN_ID',$this->returnID,PDO::PARAM_INT,12);
$table->sequenceName='RETURN_ID';
}
else
$command=$this->getDbConnection()->createCommand($sql);
foreach($valuesas$name=>$value)
$command->bindValue($name,$value);
return$command;
}
创建INSERT命令。
getLastInsertID() 方法public mixed getLastInsertID(mixed $table) | ||
$table | mixed | 表结构(CDbTableSchema)或者表名(字符串)。 |
{return} | mixed | 最后一次插入ID。若没有序列名,则返回null。 |
publicfunctiongetLastInsertID($table)
{
return$this->returnID;
}
返回指定表的最后一次插入ID。