COciCommandBuilder
| 包 | system.db.schema.oci | 
|---|---|
| 继承 | class COciCommandBuilder » CDbCommandBuilder » CComponent | 
| 源码 | framework/db/schema/oci/COciCommandBuilder.php | 
COciCommandBuilder provides basic methods to create query commands for tables.
公共属性
| 属性 | 类型 | 描述 | 被定义在 | 
|---|---|---|---|
| dbConnection | CDbConnection | database connection. | CDbCommandBuilder | 
| returnID | integer | the last insertion ID | COciCommandBuilder | 
| schema | CDbSchema | the schema for this command builder. | CDbCommandBuilder | 
受保护的属性
| 属性 | 类型 | 描述 | 被定义在 | 
|---|---|---|---|
| integerPrimaryKeyDefaultValue | string | Returns default value of the integer/serial primary key. Default value means that the next | CDbCommandBuilder | 
公共方法
| 方法 | 描述 | 被定义在 | 
|---|---|---|
| __call() | Calls the named method which is not a class method. | CComponent | 
| __construct() | CDbCommandBuilder | |
| __get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent | 
| __isset() | Checks if a property value is null. | CComponent | 
| __set() | Sets value of a component property. | CComponent | 
| __unset() | Sets a component property to be 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() | Alters the SQL to apply LIMIT and OFFSET. | COciCommandBuilder | 
| applyOrder() | Alters the SQL to apply ORDER BY. | CDbCommandBuilder | 
| asa() | Returns the named behavior object. | CComponent | 
| attachBehavior() | Attaches a behavior to this component. | CComponent | 
| attachBehaviors() | Attaches a list of behaviors to the component. | CComponent | 
| attachEventHandler() | Attaches an event handler to an event. | CComponent | 
| bindValues() | Binds parameter values for an SQL command. | CDbCommandBuilder | 
| canGetProperty() | Determines whether a property can be read. | CComponent | 
| canSetProperty() | Determines whether a property can be set. | 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() | Creates an INSERT command. | COciCommandBuilder | 
| createMultipleInsertCommand() | Creates a multiple INSERT command. | 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() | Detaches a behavior from the component. | CComponent | 
| detachBehaviors() | Detaches all behaviors from the component. | CComponent | 
| detachEventHandler() | Detaches an existing event handler. | CComponent | 
| disableBehavior() | Disables an attached behavior. | CComponent | 
| disableBehaviors() | Disables all behaviors attached to this component. | CComponent | 
| enableBehavior() | Enables an attached behavior. | CComponent | 
| enableBehaviors() | Enables all behaviors attached to this component. | CComponent | 
| evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent | 
| getDbConnection() | Returns database connection. | CDbCommandBuilder | 
| getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent | 
| getLastInsertID() | Returns the last insertion ID for the specified table. | COciCommandBuilder | 
| getSchema() | Returns the schema for this command builder. | CDbCommandBuilder | 
| hasEvent() | Determines whether an event is defined. | CComponent | 
| hasEventHandler() | Checks whether the named event has attached handlers. | CComponent | 
| hasProperty() | Determines whether a property is defined. | CComponent | 
| raiseEvent() | Raises an event. | CComponent | 
受保护的方法
| 方法 | 描述 | 被定义在 | 
|---|---|---|
| composeMultipleInsertCommand() | Creates a multiple INSERT command. | CDbCommandBuilder | 
| createCompositeInCondition() | Generates the expression for selecting rows with specified composite key values. | CDbCommandBuilder | 
| ensureTable() | Checks if the parameter is a valid table schema. | CDbCommandBuilder | 
| getIntegerPrimaryKeyDefaultValue() | Returns default value of the integer/serial primary key. Default value means that the next | CDbCommandBuilder | 
属性详情
returnID
属性
public integer $returnID;
the last insertion ID
方法详情
applyLimit()
方法
| 
public string applyLimit(string $sql, integer $limit, integer $offset) | ||
| $sql | string | SQL query string without LIMIT and OFFSET. | 
| $limit | integer | maximum number of rows, -1 to ignore limit. | 
| $offset | integer | row offset, -1 to ignore offset. | 
| {return} | string | SQL with LIMIT and OFFSET | 
源码: framework/db/schema/oci/COciCommandBuilder.php#41 (显示)
public function applyLimit($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
WITH USER_SQL AS ({$sql}),
PAGINATION AS (SELECT USER_SQL.*, rownum as rowNumId FROM USER_SQL)
SELECT *
FROM PAGINATION
{$filter}
EOD;
    return $sql;
}
Alters the SQL to apply LIMIT and OFFSET.
createInsertCommand()
方法
| 
public CDbCommand createInsertCommand(mixed $table, array $data) | ||
| $table | mixed | the table schema (CDbTableSchema) or the table name (string). | 
| $data | array | data to be inserted (column name=>column value). If a key is not a valid column name, the corresponding value will be ignored. | 
| {return} | CDbCommand | insert command | 
源码: framework/db/schema/oci/COciCommandBuilder.php#79 (显示)
public function createInsertCommand($table,$data)
{
    $this->ensureTable($table);
    $fields=array();
    $values=array();
    $placeholders=array();
    $i=0;
    foreach($data as $name=>$value)
    {
        if(($column=$table->getColumn($name))!==null && ($value!==null || $column->allowNull))
        {
            $fields[]=$column->rawName;
            if($value instanceof CDbExpression)
            {
                $placeholders[]=$value->expression;
                foreach($value->params as $n=>$v)
                    $values[$n]=$v;
            }
            else
            {
                $placeholders[]=self::PARAM_PREFIX.$i;
                $values[self::PARAM_PREFIX.$i]=$column->typecast($value);
                $i++;
            }
        }
    }
    $sql="INSERT INTO {$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($values as $name=>$value)
        $command->bindValue($name,$value);
    return $command;
}
Creates an INSERT command.
createMultipleInsertCommand()
方法
(自版本 v1.1.14 可用)
| 
public CDbCommand createMultipleInsertCommand(mixed $table, array $data) | ||
| $table | mixed | the table schema (CDbTableSchema) or the table name (string). | 
| $data | array | list data to be inserted, each value should be an array in format (column name=>column value). If a key is not a valid column name, the corresponding value will be ignored. | 
| {return} | CDbCommand | multiple insert command | 
源码: framework/db/schema/oci/COciCommandBuilder.php#134 (显示)
public function createMultipleInsertCommand($table,array $data)
{
    $templates=array(
        'main'=>'INSERT ALL {{rowInsertValues}} SELECT * FROM dual',
        'columnInsertValue'=>'{{value}}',
        'columnInsertValueGlue'=>', ',
        'rowInsertValue'=>'INTO {{tableName}} ({{columnInsertNames}}) VALUES ({{columnInsertValues}})',
        'rowInsertValueGlue'=>' ',
        'columnInsertNameGlue'=>', ',
    );
    return $this->composeMultipleInsertCommand($table,$data,$templates);
}
Creates a multiple INSERT command. This method could be used to achieve better performance during insertion of the large amount of data into the database tables.
getLastInsertID()
方法
| 
public mixed getLastInsertID(mixed $table) | ||
| $table | mixed | the table schema (CDbTableSchema) or the table name (string). | 
| {return} | mixed | last insertion id. Null is returned if no sequence name. | 
源码: framework/db/schema/oci/COciCommandBuilder.php#29 (显示)
public function getLastInsertID($table)
{
    return $this->returnID;
}
Returns the last insertion ID for the specified table.