Package | system.db.schema |
---|---|
Inheritance | abstract class CDbSchema » CComponent |
Subclasses | CMssqlSchema, CMysqlSchema, COciSchema, CPgsqlSchema, CSqliteSchema |
Since | 1.0 |
Version | $Id$ |
Source Code | framework/db/schema/CDbSchema.php |
Property | Type | Description | Defined By |
---|---|---|---|
commandBuilder | CDbCommandBuilder | the SQL command builder for this connection. | CDbSchema |
dbConnection | CDbConnection | database connection. | CDbSchema |
tableNames | array | Returns all table names in the database. | CDbSchema |
tables | array | Returns the metadata for all tables in the database. | CDbSchema |
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__construct() | Constructor. | CDbSchema |
__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 |
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 |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
compareTableNames() | Compares two table names. | CDbSchema |
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 |
getCommandBuilder() | Returns the SQL command builder for this connection. | CDbSchema |
getDbConnection() | Returns database connection. The connection is active. | CDbSchema |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getTable() | Obtains the metadata for the named table. | CDbSchema |
getTableNames() | Returns all table names in the database. | CDbSchema |
getTables() | Returns the metadata for all tables in the database. | CDbSchema |
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 |
quoteColumnName() | Quotes a column name for use in a query. | CDbSchema |
quoteTableName() | Quotes a table name for use in a query. | CDbSchema |
raiseEvent() | Raises an event. | CComponent |
refresh() | Refreshes the schema. | CDbSchema |
Method | Description | Defined By |
---|---|---|
createCommandBuilder() | Creates a command builder for the database. | CDbSchema |
createTable() | Creates a table instance representing the metadata for the named table. | CDbSchema |
findTableNames() | Returns all table names in the database. | CDbSchema |
the SQL command builder for this connection.
database connection. The connection is active.
Returns all table names in the database.
Returns the metadata for all tables in the database.
public void __construct(CDbConnection $conn)
| ||
$conn | CDbConnection | database connection. |
public function __construct($conn)
{
$conn->setActive(true);
$this->_connection=$conn;
foreach($conn->schemaCachingExclude as $name)
$this->_cacheExclude[$name]=true;
}
Constructor.
public boolean compareTableNames(string $name1, string $name2)
| ||
$name1 | string | table name 1 |
$name2 | string | table name 2 |
{return} | boolean | whether the two table names refer to the same table. |
public function compareTableNames($name1,$name2)
{
$name1=str_replace(array('"','`',"'"),'',$name1);
$name2=str_replace(array('"','`',"'"),'',$name2);
if(($pos=strrpos($name1,'.'))!==false)
$name1=substr($name1,$pos+1);
if(($pos=strrpos($name2,'.'))!==false)
$name2=substr($name2,$pos+1);
return $name1===$name2;
}
Compares two table names. The table names can be either quoted or unquoted. This method will consider both cases.
protected CDbCommandBuilder createCommandBuilder()
| ||
{return} | CDbCommandBuilder | command builder instance |
protected function createCommandBuilder()
{
return new CDbCommandBuilder($this);
}
Creates a command builder for the database. This method may be overridden by child classes to create a DBMS-specific command builder.
abstract protected CDbTableSchema createTable($name)
| ||
$name | ||
{return} | CDbTableSchema | driver dependent table metadata, null if the table does not exist. |
abstract protected function createTable($name);
Creates a table instance representing the metadata for the named table.
protected array findTableNames(string $schema='')
| ||
$schema | string | the schema of the tables. Defaults to empty string, meaning the current or default schema. If not empty, the returned table names will be prefixed with the schema name. |
{return} | array | all table names in the database. |
protected function findTableNames($schema='')
{
throw new CDbException(Yii::t('yii','{class} does not support fetching all table names.',
array('{class}'=>get_class($this))));
}
Returns all table names in the database. This method should be overridden by child classes in order to support this feature because the default implemenation simply throws an exception.
public CDbCommandBuilder getCommandBuilder()
| ||
{return} | CDbCommandBuilder | the SQL command builder for this connection. |
public function getCommandBuilder()
{
if($this->_builder!==null)
return $this->_builder;
else
return $this->_builder=$this->createCommandBuilder();
}
public CDbConnection getDbConnection()
| ||
{return} | CDbConnection | database connection. The connection is active. |
public function getDbConnection()
{
return $this->_connection;
}
public CDbTableSchema getTable(string $name)
| ||
$name | string | table name |
{return} | CDbTableSchema | table metadata. Null if the named table does not exist. |
public function getTable($name)
{
if(isset($this->_tables[$name]))
return $this->_tables[$name];
else if(!isset($this->_cacheExclude[$name]) && ($duration=$this->_connection->schemaCachingDuration)>0 && $this->_connection->schemaCacheID!==false && ($cache=Yii::app()->getComponent($this->_connection->schemaCacheID))!==null)
{
$key='yii:dbschema'.$this->_connection->connectionString.':'.$this->_connection->username.':'.$name;
if(($table=$cache->get($key))===false)
{
$table=$this->createTable($name);
$cache->set($key,$table,$duration);
}
return $this->_tables[$name]=$table;
}
else
return $this->_tables[$name]=$this->createTable($name);
}
Obtains the metadata for the named table.
public array getTableNames(string $schema='')
| ||
$schema | string | the schema of the tables. Defaults to empty string, meaning the current or default schema. If not empty, the returned table names will be prefixed with the schema name. |
{return} | array | all table names in the database. |
public function getTableNames($schema='')
{
if(!isset($this->_tableNames[$schema]))
$this->_tableNames[$schema]=$this->findTableNames($schema);
return $this->_tableNames[$schema];
}
Returns all table names in the database.
public array getTables(string $schema='')
| ||
$schema | string | the schema of the tables. Defaults to empty string, meaning the current or default schema. |
{return} | array | the metadata for all tables in the database. Each array element is an instance of CDbTableSchema (or its child class). The array keys are table names. |
public function getTables($schema='')
{
$tables=array();
foreach($this->getTableNames($schema) as $name)
$tables[$name]=$this->getTable($name);
return $tables;
}
Returns the metadata for all tables in the database.
public string quoteColumnName(string $name)
| ||
$name | string | column name |
{return} | string | the properly quoted column name |
public function quoteColumnName($name)
{
return '"'.$name.'"';
}
Quotes a column name for use in a query.
public string quoteTableName(string $name)
| ||
$name | string | table name |
{return} | string | the properly quoted table name |
public function quoteTableName($name)
{
return "'".$name."'";
}
Quotes a table name for use in a query.
public void refresh()
|
public function refresh()
{
if(($duration=$this->_connection->schemaCachingDuration)>0 && $this->_connection->schemaCacheID!==false && ($cache=Yii::app()->getComponent($this->_connection->schemaCacheID))!==null)
{
foreach(array_keys($this->_tables) as $name)
{
if(!isset($this->_cacheExclude[$name]))
{
$key='yii:dbschema'.$this->_connection->connectionString.':'.$this->_connection->username.':'.$name;
$cache->delete($key);
}
}
}
$this->_tables=array();
$this->_tableNames=array();
$this->_builder=null;
}
Refreshes the schema. This method resets the loaded table metadata and command builder so that they can be recreated to reflect the change of schema.
Signup or Login in order to comment.