class MySQLSchemaManager extends DBSchemaManager (View source)

Represents schema management object for MySQL

Constants

ID

Identifier for this schema, used for configuring schema-specific table creation options

Properties

static private bool $check_and_repair_on_build from  DBSchemaManager

Methods

setDatabase(Database $database)

Injector injection point for database controller

quiet(bool $quiet = true)

Enable supression of database messages.

query(string $sql, int $errorLevel = E_USER_ERROR)

Execute the given SQL query.

preparedQuery(string $sql, array $parameters, int $errorLevel = E_USER_ERROR)

Execute the given SQL parameterised query with the specified arguments

schemaUpdate(callable $callback)

Initiates a schema update within a single callback

cancelSchemaUpdate()

Cancels the schema updates requested during (but not after) schemaUpdate() call.

bool
isSchemaUpdating()

Returns true if we are during a schema update.

bool
doesSchemaNeedUpdating()

Returns true if schema modifications were requested during (but not after) schemaUpdate() call.

transCreateTable(string $table, array $options = null, array $advanced_options = null)

Instruct the schema manager to record a table creation to later execute

transAlterTable(string $table, array $options, array $advanced_options)

Instruct the schema manager to record a table alteration to later execute

transCreateField(string $table, string $field, string $schema)

Instruct the schema manager to record a field to be later created

transCreateIndex(string $table, string $index, array $schema)

Instruct the schema manager to record an index to be later created

transAlterField(string $table, string $field, string $schema)

Instruct the schema manager to record a field to be later updated

transAlterIndex(string $table, string $index, array $schema)

Instruct the schema manager to record an index to be later updated

requireTable(string $table, array $fieldSchema = null, array $indexSchema = null, bool $hasAutoIncPK = true, array $options = array(), array|bool $extensions = false)

Generate the following table in the database, modifying whatever already exists as necessary.

dontRequireTable(string $table)

If the given table exists, move it out of the way by renaming it to obsolete(tablename).

requireIndex(string $table, string $index, string|array|bool $spec)

Generate the given index in the database, modifying whatever already exists as necessary.

bool
hasTable($table)

Returns true if the given table is exists in the current database

bool
hasField(string $tableName, string $fieldName)

Return true if the table exists and already has a the field specified

requireField(string $table, string $field, array|string $spec)

Generate the given field on the table, modifying whatever already exists as necessary.

dontRequireField(string $table, string $fieldName)

If the given field exists, move it out of the way by renaming it to obsolete(fieldname).

alterationMessage(string $message, string $type = "")

Show a message about database alteration

string
IdColumn(bool $asDbValue = false, bool $hasAutoIncPK = true)

This returns the data type for the id column which is the primary key for each table

bool
checkAndRepairTable(string $tableName)

Checks a table's integrity and repairs it if necessary.

fixTableCase(string $tableName)

Ensure the given table has the correct case

array
enumValuesForField(string $tableName, string $fieldName)

Returns the values of the given enum field

dbDataType($type)

No description

array
databaseList()

Retrieves the list of all databases the user has access to

bool
databaseExists(string $name)

Determine if the database with the specified name exists

bool
createDatabase(string $name)

Create a database with the specified name

dropDatabase(string $name)

Drops a database with the specified name

alterIndex(string $tableName, string $indexName, array $indexSpec)

Alter an index on a table.

indexList(string $table)

Return the list of indexes in a table.

array
tableList()

Returns a list of all tables in the database.

string
createTable(string $table, array $fields = null, array $indexes = null, array $options = null, array $advancedOptions = null)

Create a new table.

alterTable($tableName, array $newFields = null, array $newIndexes = null, array $alteredFields = null, array $alteredIndexes = null, array $alteredOptions = null, array $advancedOptions = null)

Alter a table's schema.

renameTable(string $oldTableName, string $newTableName)

Renames a table

createField($tableName, $fieldName, $fieldSpec)

Create a new field on a table.

renameField(string $tableName, string $oldName, string $newName)

Change the database column name of the given field.

array
fieldList(string $table)

Get a list of all the fields for the given table.

bool
clearCachedFieldlist(string $tableName = null)

This allows the cached values for a table's field list to be erased.

string
boolean(array $values)

Return a boolean type-formatted string

string
date(array $values)

Return a date type-formatted string For MySQL, we simply return the word 'date', no other parameters are necessary

string
decimal(array $values)

Return a decimal type-formatted string

string
enum(array $values)

Return a enum type-formatted string

string
set(array $values)

Return a set type-formatted string

string
float(array $values)

Return a float type-formatted string For MySQL, we simply return the word 'date', no other parameters are necessary

string
int(array $values)

Return a int type-formatted string

string
datetime(array $values)

Return a datetime type-formatted string For MySQL, we simply return the word 'datetime', no other parameters are necessary

string
text(array $values)

Return a text type-formatted string

string
time(array $values)

Return a time type-formatted string For MySQL, we simply return the word 'time', no other parameters are necessary

string
varchar(array $values)

Return a varchar type-formatted string

year($values)

No description

isView($tableName)

No description

alterField(string $tableName, string $fieldName, string $fieldSpec)

Change the database type of the given field.

createIndex(string $tableName, string $indexName, string $indexSpec)

Create an index on a table.

string
bigint(array $values)

Return a bigint type-formatted string

Details

setDatabase(Database $database)

Injector injection point for database controller

Parameters

Database $database

quiet(bool $quiet = true)

Enable supression of database messages.

Parameters

bool $quiet

Query query(string $sql, int $errorLevel = E_USER_ERROR)

Execute the given SQL query.

This abstract function must be defined by subclasses as part of the actual implementation. It should return a subclass of SS_Query as the result.

Parameters

string $sql

The SQL query to execute

int $errorLevel

The level of error reporting to enable for the query

Return Value

Query

Query preparedQuery(string $sql, array $parameters, int $errorLevel = E_USER_ERROR)

Execute the given SQL parameterised query with the specified arguments

Parameters

string $sql

The SQL query to execute. The ? character will denote parameters.

array $parameters

An ordered list of arguments.

int $errorLevel

The level of error reporting to enable for the query

Return Value

Query

schemaUpdate(callable $callback)

Initiates a schema update within a single callback

Parameters

callable $callback

cancelSchemaUpdate()

Cancels the schema updates requested during (but not after) schemaUpdate() call.

bool isSchemaUpdating()

Returns true if we are during a schema update.

Return Value

bool

bool doesSchemaNeedUpdating()

Returns true if schema modifications were requested during (but not after) schemaUpdate() call.

Return Value

bool

transCreateTable(string $table, array $options = null, array $advanced_options = null)

Instruct the schema manager to record a table creation to later execute

Parameters

string $table

Name of the table

array $options

Create table options (ENGINE, etc.)

array $advanced_options

Advanced table creation options

transAlterTable(string $table, array $options, array $advanced_options)

Instruct the schema manager to record a table alteration to later execute

Parameters

string $table

Name of the table

array $options

Create table options (ENGINE, etc.)

array $advanced_options

Advanced table creation options

transCreateField(string $table, string $field, string $schema)

Instruct the schema manager to record a field to be later created

Parameters

string $table

Name of the table to hold this field

string $field

Name of the field to create

string $schema

Field specification as a string

transCreateIndex(string $table, string $index, array $schema)

Instruct the schema manager to record an index to be later created

Parameters

string $table

Name of the table to hold this index

string $index

Name of the index to create

array $schema

Already parsed index specification

transAlterField(string $table, string $field, string $schema)

Instruct the schema manager to record a field to be later updated

Parameters

string $table

Name of the table to hold this field

string $field

Name of the field to update

string $schema

Field specification as a string

transAlterIndex(string $table, string $index, array $schema)

Instruct the schema manager to record an index to be later updated

Parameters

string $table

Name of the table to hold this index

string $index

Name of the index to update

array $schema

Already parsed index specification

requireTable(string $table, array $fieldSchema = null, array $indexSchema = null, bool $hasAutoIncPK = true, array $options = array(), array|bool $extensions = false)

Generate the following table in the database, modifying whatever already exists as necessary.

Parameters

string $table

The name of the table

array $fieldSchema

A list of the fields to create, in the same form as DataObject::$db

array $indexSchema

A list of indexes to create. See {@link requireIndex()} The values of the array can be one of:

  • true: Create a single column index on the field named the same as the index.
  • array('fields' => array('A','B','C'), 'type' => 'index/unique/fulltext'): This gives you full control over the index.
bool $hasAutoIncPK

A flag indicating that the primary key on this table is an autoincrement type

array $options

Create table options (ENGINE, etc.)

array|bool $extensions

List of extensions

dontRequireTable(string $table)

If the given table exists, move it out of the way by renaming it to obsolete(tablename).

Parameters

string $table

The table name.

requireIndex(string $table, string $index, string|array|bool $spec)

Generate the given index in the database, modifying whatever already exists as necessary.

The keys of the array are the names of the index. The values of the array can be one of:

  • true: Create a single column index on the field named the same as the index.
  • array('type' => 'index|unique|fulltext', 'value' => 'FieldA, FieldB'): This gives you full control over the index.

Parameters

string $table

The table name.

string $index

The index name.

string|array|bool $spec

The specification of the index in any loose format. See requireTable() for more information.

bool hasTable($table)

Returns true if the given table is exists in the current database

Parameters

$table

Return Value

bool

Flag indicating existence of table

bool hasField(string $tableName, string $fieldName)

Return true if the table exists and already has a the field specified

Parameters

string $tableName
  • The table to check
string $fieldName
  • The field to check

Return Value

bool
  • True if the table exists and the field exists on the table

requireField(string $table, string $field, array|string $spec)

Generate the given field on the table, modifying whatever already exists as necessary.

Parameters

string $table

The table name.

string $field

The field name.

array|string $spec

The field specification. If passed in array syntax, the specific database driver takes care of the ALTER TABLE syntax. If passed as a string, its assumed to be prepared as a direct SQL framgment ready for insertion into ALTER TABLE. In this case you'll need to take care of database abstraction in your DBField subclass.

dontRequireField(string $table, string $fieldName)

If the given field exists, move it out of the way by renaming it to obsolete(fieldname).

Parameters

string $table
string $fieldName

alterationMessage(string $message, string $type = "")

Show a message about database alteration

Parameters

string $message

to display

string $type

one of [created|changed|repaired|obsolete|deleted|error]

string IdColumn(bool $asDbValue = false, bool $hasAutoIncPK = true)

This returns the data type for the id column which is the primary key for each table

Parameters

bool $asDbValue
bool $hasAutoIncPK

Return Value

string

bool checkAndRepairTable(string $tableName)

Checks a table's integrity and repairs it if necessary.

Parameters

string $tableName

The name of the table.

Return Value

bool

Return true if the table has integrity after the method is complete.

fixTableCase(string $tableName)

Ensure the given table has the correct case

Parameters

string $tableName

Name of table in desired case

array enumValuesForField(string $tableName, string $fieldName)

Returns the values of the given enum field

Parameters

string $tableName

Name of table to check

string $fieldName

name of enum field to check

Return Value

array

List of enum values

dbDataType($type)

Parameters

$type

array databaseList()

Retrieves the list of all databases the user has access to

Return Value

array

List of database names

bool databaseExists(string $name)

Determine if the database with the specified name exists

Parameters

string $name

Name of the database to check for

Return Value

bool

Flag indicating whether this database exists

bool createDatabase(string $name)

Create a database with the specified name

Parameters

string $name

Name of the database to create

Return Value

bool

True if successful

dropDatabase(string $name)

Drops a database with the specified name

Parameters

string $name

Name of the database to drop

alterIndex(string $tableName, string $indexName, array $indexSpec)

Alter an index on a table.

Parameters

string $tableName

The name of the table.

string $indexName

The name of the index.

array $indexSpec

The specification of the index, see Database::requireIndex() for more details.

indexList(string $table)

Return the list of indexes in a table.

Parameters

string $table

The table name.

array tableList()

Returns a list of all tables in the database.

Keys are table names in lower case, values are table names in case that database expects.

Return Value

array

string createTable(string $table, array $fields = null, array $indexes = null, array $options = null, array $advancedOptions = null)

Create a new table.

Parameters

string $table

The name of the table

array $fields

A map of field names to field types

array $indexes

A map of indexes

array $options

An map of additional options. The available keys are as follows:

  • 'MSSQLDatabase'/'MySQLDatabase'/'PostgreSQLDatabase' - database-specific options such as "engine" for MySQL.
  • 'temporary' - If true, then a temporary table will be created
array $advancedOptions

Advanced creation options

Return Value

string

The table name generated. This may be different from the table name, for example with temporary tables.

alterTable($tableName, array $newFields = null, array $newIndexes = null, array $alteredFields = null, array $alteredIndexes = null, array $alteredOptions = null, array $advancedOptions = null)

Alter a table's schema.

Parameters

$tableName
array $newFields

New fields, a map of field name => field schema

array $newIndexes

New indexes, a map of index name => index type

array $alteredFields

Updated fields, a map of field name => field schema

array $alteredIndexes

Updated indexes, a map of index name => index type

array $alteredOptions
array $advancedOptions

renameTable(string $oldTableName, string $newTableName)

Renames a table

Parameters

string $oldTableName

The old table name.

string $newTableName

The new table name.

Exceptions

LogicException

createField($tableName, $fieldName, $fieldSpec)

Create a new field on a table.

Parameters

$tableName
$fieldName
$fieldSpec

renameField(string $tableName, string $oldName, string $newName)

Change the database column name of the given field.

Parameters

string $tableName

The name of the tbale the field is in.

string $oldName

The name of the field to change.

string $newName

The new name of the field

array fieldList(string $table)

Get a list of all the fields for the given table.

Returns a map of field name => field spec.

Parameters

string $table

The table name.

Return Value

array

bool clearCachedFieldlist(string $tableName = null)

This allows the cached values for a table's field list to be erased.

If $tablename is empty, then the whole cache is erased.

Parameters

string $tableName

Return Value

bool

string boolean(array $values)

Return a boolean type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string date(array $values)

Return a date type-formatted string For MySQL, we simply return the word 'date', no other parameters are necessary

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string decimal(array $values)

Return a decimal type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string enum(array $values)

Return a enum type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string set(array $values)

Return a set type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string float(array $values)

Return a float type-formatted string For MySQL, we simply return the word 'date', no other parameters are necessary

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string int(array $values)

Return a int type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string datetime(array $values)

Return a datetime type-formatted string For MySQL, we simply return the word 'datetime', no other parameters are necessary

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string text(array $values)

Return a text type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string time(array $values)

Return a time type-formatted string For MySQL, we simply return the word 'time', no other parameters are necessary

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

string varchar(array $values)

Return a varchar type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string

year($values)

Parameters

$values

isView($tableName)

Parameters

$tableName

alterField(string $tableName, string $fieldName, string $fieldSpec)

Change the database type of the given field.

Parameters

string $tableName

The name of the tbale the field is in.

string $fieldName

The name of the field to change.

string $fieldSpec

The new field specification

createIndex(string $tableName, string $indexName, string $indexSpec)

Create an index on a table.

Parameters

string $tableName

The name of the table.

string $indexName

The name of the index.

string $indexSpec

The specification of the index, see {@link SS_Database::requireIndex()} for more details.

string bigint(array $values)

Return a bigint type-formatted string

Parameters

array $values

Contains a tokenised list of info about this data type

Return Value

string