class Schema extends AbstractAsset (View source)

Object representation of a database schema

Different vendors have very inconsistent naming with regard to the concept of a "schema". Doctrine understands a schema as the entity that conceptually wraps a set of database objects such as tables, sequences, indexes and foreign keys that belong to each other into a namespace. A Doctrine Schema has nothing to do with the "SCHEMA" defined as in PostgreSQL, it is more related to the concept of "DATABASE" that exists in MySQL and PostgreSQL.

Every asset in the doctrine schema has a name. A name consists of either a namespace.local name pair or just a local unqualified name.

The abstraction layer that covers a PostgreSQL schema is the namespace of an database object (asset). A schema can have a name, which will be used as default namespace for the unqualified database objects that are created in the schema.

In the case of MySQL where cross-database queries are allowed this leads to databases being "misinterpreted" as namespaces. This is intentional, however the CREATE/DROP SQL visitors will just filter this queries and do not execute them. Only the queries for the currently connected database are executed.

Properties

protected string $_name from AbstractAsset
protected string $_namespace Namespace of the asset. If none isset the default namespace is assumed. from AbstractAsset
protected bool $_quoted from AbstractAsset
protected array $_tables
protected array $_sequences
protected SchemaConfig $_schemaConfig

Methods

_setName(string $name)

Set name of this asset

bool
isInDefaultNamespace(string $defaultNamespaceName)

Is this asset in the default namespace?

string
getNamespaceName()

Get namespace name of this asset.

string
getShortestName(string $defaultNamespaceName)

The shortest name is stripped of the default namespace. All other namespaced elements are returned as full-qualified names.

string
getFullQualifiedName($defaultNamespaceName)

The normalized name is full-qualified and lowerspaced. Lowerspacing is actually wrong, but we have to do it to keep our sanity. If you are using database objects that only differentiate in the casing (FOO vs Foo) then you will NOT be able to use Doctrine Schema abstraction.

bool
isQuoted(string $identifier)

Check if this identifier is quoted.

string
trimQuotes(string $identifier)

Trim quotes from the identifier.

string
getName()

Return name of this schema asset.

string
getQuotedName(AbstractPlatform $platform)

Get the quoted representation of this asset but only if it was defined with one. Otherwise return the plain unquoted value as inserted.

string
_generateIdentifierName(array $columnNames, string $prefix = '', int $maxSize = 30)

Generate an identifier from a list of column names obeying a certain string length.

__construct(array $tables = array(), array $sequences = array(), SchemaConfig $schemaConfig = null)

No description

bool
hasExplicitForeignKeyIndexes()

No description

_addTable(Table $table)

No description

_addSequence(Sequence $sequence)

No description

array
getTables()

Get all tables of this schema.

getTable(string $tableName)

No description

hasTable(string $tableName)

Does this schema have a table with the given name?

array
getTableNames()

Get all table names, prefixed with a schema name, even the default one if present.

hasSequence($sequenceName)

No description

Sequence
getSequence(string $sequenceName)

No description

Sequence[]
getSequences()

No description

createTable(string $tableName)

Create a new table

renameTable(string $oldTableName, string $newTableName)

Rename a table

dropTable(string $tableName)

Drop a table from the schema.

createSequence(string $sequenceName, int $allocationSize = 1, int $initialValue = 1)

Create a new sequence

dropSequence(string $sequenceName)

No description

array
toSql(AbstractPlatform $platform)

Return an array of necessary sql queries to create the schema on the given platform.

array
toDropSql(AbstractPlatform $platform)

Return an array of necessary sql queries to drop the schema on the given platform.

getMigrateToSql(Schema $toSchema, AbstractPlatform $platform)

No description

getMigrateFromSql(Schema $fromSchema, AbstractPlatform $platform)

No description

visit(Visitor $visitor)

No description

void
__clone()

Cloning a Schema triggers a deep clone of all related assets.

Details

protected _setName(string $name)

Set name of this asset

Parameters

string $name

bool isInDefaultNamespace(string $defaultNamespaceName)

Is this asset in the default namespace?

Parameters

string $defaultNamespaceName

Return Value

bool

string getNamespaceName()

Get namespace name of this asset.

If NULL is returned this means the default namespace is used.

Return Value

string

string getShortestName(string $defaultNamespaceName)

The shortest name is stripped of the default namespace. All other namespaced elements are returned as full-qualified names.

Parameters

string $defaultNamespaceName

Return Value

string

string getFullQualifiedName($defaultNamespaceName)

The normalized name is full-qualified and lowerspaced. Lowerspacing is actually wrong, but we have to do it to keep our sanity. If you are using database objects that only differentiate in the casing (FOO vs Foo) then you will NOT be able to use Doctrine Schema abstraction.

Every non-namespaced element is prefixed with the default namespace name which is passed as argument to this method.

Parameters

$defaultNamespaceName

Return Value

string

protected bool isQuoted(string $identifier)

Check if this identifier is quoted.

Parameters

string $identifier

Return Value

bool

protected string trimQuotes(string $identifier)

Trim quotes from the identifier.

Parameters

string $identifier

Return Value

string

string getName()

Return name of this schema asset.

Return Value

string

string getQuotedName(AbstractPlatform $platform)

Get the quoted representation of this asset but only if it was defined with one. Otherwise return the plain unquoted value as inserted.

Parameters

AbstractPlatform $platform

Return Value

string

protected string _generateIdentifierName(array $columnNames, string $prefix = '', int $maxSize = 30)

Generate an identifier from a list of column names obeying a certain string length.

This is especially important for Oracle, since it does not allow identifiers larger than 30 chars, however building idents automatically for foreign keys, composite keys or such can easily create very long names.

Parameters

array $columnNames
string $prefix
int $maxSize

Return Value

string

__construct(array $tables = array(), array $sequences = array(), SchemaConfig $schemaConfig = null)

Parameters

array $tables
array $sequences
SchemaConfig $schemaConfig

bool hasExplicitForeignKeyIndexes()

Return Value

bool

protected _addTable(Table $table)

Parameters

Table $table

protected _addSequence(Sequence $sequence)

Parameters

Sequence $sequence

array getTables()

Get all tables of this schema.

Return Value

array

Table getTable(string $tableName)

Parameters

string $tableName

Return Value

Table

Schema hasTable(string $tableName)

Does this schema have a table with the given name?

Parameters

string $tableName

Return Value

Schema

array getTableNames()

Get all table names, prefixed with a schema name, even the default one if present.

Return Value

array

hasSequence($sequenceName)

Parameters

$sequenceName

Sequence getSequence(string $sequenceName)

Parameters

string $sequenceName

Return Value

Sequence

Exceptions

SchemaException

Sequence[] getSequences()

Return Value

Sequence[]

Table createTable(string $tableName)

Create a new table

Parameters

string $tableName

Return Value

Table

Schema renameTable(string $oldTableName, string $newTableName)

Rename a table

Parameters

string $oldTableName
string $newTableName

Return Value

Schema

Schema dropTable(string $tableName)

Drop a table from the schema.

Parameters

string $tableName

Return Value

Schema

Sequence createSequence(string $sequenceName, int $allocationSize = 1, int $initialValue = 1)

Create a new sequence

Parameters

string $sequenceName
int $allocationSize
int $initialValue

Return Value

Sequence

Schema dropSequence(string $sequenceName)

Parameters

string $sequenceName

Return Value

Schema

array toSql(AbstractPlatform $platform)

Return an array of necessary sql queries to create the schema on the given platform.

Parameters

AbstractPlatform $platform

Return Value

array

array toDropSql(AbstractPlatform $platform)

Return an array of necessary sql queries to drop the schema on the given platform.

Parameters

AbstractPlatform $platform

Return Value

array

getMigrateToSql(Schema $toSchema, AbstractPlatform $platform)

Parameters

Schema $toSchema
AbstractPlatform $platform

getMigrateFromSql(Schema $fromSchema, AbstractPlatform $platform)

Parameters

Schema $fromSchema
AbstractPlatform $platform

visit(Visitor $visitor)

Parameters

Visitor $visitor

void __clone()

Cloning a Schema triggers a deep clone of all related assets.

Return Value

void