Ejemplo n.º 1
0
 /**
  * Export default value from column schema into scalar form (which we can store in cache).
  *
  * @param AbstractColumn $column
  * @return mixed|null
  */
 private function exportDefault(AbstractColumn $column)
 {
     if (in_array($column->getName(), $this->tableSchema->getPrimaryKeys())) {
         //Column declared as primary key, nothing to do with default values
         return null;
     }
     $defaultValue = $column->getDefaultValue();
     if ($defaultValue instanceof FragmentInterface) {
         //We can't cache values like that
         return null;
     }
     if (is_null($defaultValue) && !$column->isNullable()) {
         return $this->castDefault($column);
     }
     return $defaultValue;
 }
Ejemplo n.º 2
0
 /**
  * Set column as big primary key and register it in parent table primary key list.
  *
  * @see TableSchema::setPrimaryKeys()
  * @return $this
  */
 public function bigPrimary()
 {
     if (!in_array($this->name, $this->table->getPrimaryKeys())) {
         $this->table->setPrimaryKeys([$this->name]);
     }
     return $this->setType('bigPrimary');
 }
Ejemplo n.º 3
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);
 }