protected Schema::createTableSql($name, $table)
Generate SQL to create a new table from a Drupal schema definition.
Parameters
$name: The name of the table to create.
$table: A Schema API table definition array.
Return value
An array of SQL statements to create the table.
File
- core/lib/Drupal/Core/Database/Driver/mysql/Schema.php, line 94
Class
- Schema
- MySQL implementation of \Drupal\Core\Database\Schema.
Namespace
Drupal\Core\Database\Driver\mysql
Code
protected function createTableSql($name, $table) { $info = $this->connection->getConnectionOptions(); // Provide defaults if needed. $table += array( 'mysql_engine' => 'InnoDB', 'mysql_character_set' => 'utf8mb4', ); $sql = "CREATE TABLE {" . $name . "} (\n"; // Add the SQL statement for each field. foreach ($table['fields'] as $field_name => $field) { $sql .= $this->createFieldSql($field_name, $this->processField($field)) . ", \n"; } // Process keys & indexes. $keys = $this->createKeysSql($table); if (count($keys)) { $sql .= implode(", \n", $keys) . ", \n"; } // Remove the last comma and space. $sql = substr($sql, 0, -3) . "\n) "; $sql .= 'ENGINE = ' . $table['mysql_engine'] . ' DEFAULT CHARACTER SET ' . $table['mysql_character_set']; // By default, MySQL uses the default collation for new tables, which is // 'utf8mb4_general_ci' for utf8mb4. If an alternate collation has been // set, it needs to be explicitly specified. // @see \Drupal\Core\Database\Driver\mysql\Schema if (!empty($info['collation'])) { $sql .= ' COLLATE ' . $info['collation']; } // Add table comment. if (!empty($table['description'])) { $sql .= ' COMMENT ' . $this->prepareComment($table['description'], self::COMMENT_MAX_TABLE); } return array($sql); }
Please login to continue.