/** * Get statement needed to create table. * * @param AbstractTable $table * @return string */ protected function createStatement(AbstractTable $table) { $statement = ["CREATE TABLE {$table->getName(true)} ("]; $innerStatement = []; //Columns foreach ($table->getColumns() as $column) { $innerStatement[] = $column->sqlStatement(); } //Primary key if (!empty($table->getPrimaryKeys())) { $primaryKeys = array_map([$this, 'quote'], $table->getPrimaryKeys()); $innerStatement[] = 'PRIMARY KEY (' . join(', ', $primaryKeys) . ')'; } //Constraints and foreign keys foreach ($table->getForeigns() as $reference) { $innerStatement[] = $reference->sqlStatement(); } $statement[] = " " . join(",\n ", $innerStatement); $statement[] = ')'; return join("\n", $statement); }