Doctrine\DBAL\Platforms\MySqlPlatform::_getCreateTableSQL PHP Method

_getCreateTableSQL() protected method

{@inheritDoc}
protected _getCreateTableSQL ( $tableName, array $columns, array $options = [] )
$columns array
$options array
    protected function _getCreateTableSQL($tableName, array $columns, array $options = array())
    {
        $queryFields = $this->getColumnDeclarationListSQL($columns);
        if (isset($options['uniqueConstraints']) && !empty($options['uniqueConstraints'])) {
            foreach ($options['uniqueConstraints'] as $index => $definition) {
                $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($index, $definition);
            }
        }
        // add all indexes
        if (isset($options['indexes']) && !empty($options['indexes'])) {
            foreach ($options['indexes'] as $index => $definition) {
                $queryFields .= ', ' . $this->getIndexDeclarationSQL($index, $definition);
            }
        }
        // attach all primary keys
        if (isset($options['primary']) && !empty($options['primary'])) {
            $keyColumns = array_unique(array_values($options['primary']));
            $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')';
        }
        $query = 'CREATE ';
        if (!empty($options['temporary'])) {
            $query .= 'TEMPORARY ';
        }
        $query .= 'TABLE ' . $tableName . ' (' . $queryFields . ') ';
        $query .= $this->buildTableOptions($options);
        $query .= $this->buildPartitionOptions($options);
        $sql[] = $query;
        $engine = 'INNODB';
        if (isset($options['engine'])) {
            $engine = strtoupper(trim($options['engine']));
        }
        // Propagate foreign key constraints only for InnoDB.
        if (isset($options['foreignKeys']) && $engine === 'INNODB') {
            foreach ((array) $options['foreignKeys'] as $definition) {
                $sql[] = $this->getCreateForeignKeySQL($definition, $tableName);
            }
        }
        return $sql;
    }

Usage Example

Example #1
0
 protected function _getCreateTableSQL($tableName, array $columns, array $options = array())
 {
     if (!isset($options['charset'])) {
         $options['charset'] = 'utf8mb4';
     }
     if (!isset($options['collate'])) {
         $options['collate'] = 'utf8mb4_unicode_ci';
     }
     return parent::_getCreateTableSQL($tableName, $columns, $options);
 }
All Usage Examples Of Doctrine\DBAL\Platforms\MySqlPlatform::_getCreateTableSQL
MySqlPlatform