Ejemplo n.º 1
0
 /**
  * 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);
 }