You are browsing a version that has not yet been released. |
Schema-Manager
A Schema Manager instance helps you with the abstraction of the generation of SQL assets such as Tables, Sequences, Foreign Keys and Indexes.
To instantiate a SchemaManager
for your connection you can use
the createSchemaManager()
method:
Now with the SchemaManager
instance in $schemaManager
you can use the
available methods to learn about your database schema:
Parameters containing identifiers passed to the SchemaManager methods are NOT quoted automatically! Identifier quoting is really difficult to do manually in a consistent way across different databases. You have to manually quote the identifiers when you accept data from user or other sources not under your control. |
listSequences()
Retrieve an array of Doctrine\DBAL\Schema\Sequence
instances
that exist for a database:
Or if you want to manually specify a database name:
Now you can loop over the array inspecting each sequence object:
listTableColumns()
Retrieve an array of Doctrine\DBAL\Schema\Column
instances that
exist for the given table:
Now you can loop over the array inspecting each column object:
introspectTable()
Retrieve a single Doctrine\DBAL\Schema\Table
instance that
encapsulates the definition of the given table:
Now you can call methods on the table to manipulate the in memory schema for that table. For example we can add a new column:
listTableForeignKeys()
Retrieve an array of Doctrine\DBAL\Schema\ForeignKeyConstraint
instances that exist for the given table:
Now you can loop over the array inspecting each foreign key object:
listTableIndexes()
Retrieve an array of Doctrine\DBAL\Schema\Index
instances that
exist for the given table:
Now you can loop over the array inspecting each index object:
listTables()
Retrieve an array of Doctrine\DBAL\Schema\Table
instances that
exist in the connections database:
Each Doctrine\DBAl\Schema\Table
instance is populated with
information provided by all the above methods. So it encapsulates
an array of Doctrine\DBAL\Schema\Column
instances that can be
retrieved with the getColumns()
method:
listViews()
Retrieve an array of Doctrine\DBAL\Schema\View
instances that
exist in the connections database:
Now you can loop over the array inspecting each view object:
introspectSchema()
For a complete representation of the current database you can use
the introspectSchema()
method which returns an instance of
Doctrine\DBAL\Schema\Schema
, which you can use in conjunction
with the SchemaTool or Schema Comparator.
Now we can clone the $fromSchema
to $toSchema
and drop a
table:
Now we can compare the two schema instances in order to calculate the differences between them and return the SQL required to make the changes on the database:
The $sql
array should give you a SQL query to drop the user
table: