protected Schema::createTableSql($name, $table)
Generate SQL to create a new table from a Drupal schema definition.
$name: The name of the table to create.
$table: A Schema API table definition array.
An array of SQL statements to create the table.
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 DatabaseConnection_mysql 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); }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Database!Driver!mysql!Schema.php/function/Schema::createTableSql/8.1.x