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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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.