Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
 {
     // The table may already be deleted in a previous
     // RemoveNamespacedAssets#acceptTable call. Removing Foreign keys that
     // point to nowhere.
     if (!$this->schema->hasTable($fkConstraint->getForeignTableName())) {
         $localTable->removeForeignKey($fkConstraint->getName());
         return;
     }
     $foreignTable = $this->schema->getTable($fkConstraint->getForeignTableName());
     if (!$foreignTable->isInDefaultNamespace($this->schema->getName())) {
         $localTable->removeForeignKey($fkConstraint->getName());
     }
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
 {
     $this->output .= $this->createNodeRelation($fkConstraint->getLocalTableName() . ":col" . current($fkConstraint->getLocalColumns()) . ":se", $fkConstraint->getForeignTableName() . ":col" . current($fkConstraint->getForeignColumns()) . ":se", array('dir' => 'back', 'arrowtail' => 'dot', 'arrowhead' => 'normal'));
 }
Exemplo n.º 3
0
 /**
  * Obtain DBMS specific SQL code portion needed to set the FOREIGN KEY constraint
  * of a field declaration to be used in statements like CREATE TABLE.
  *
  * @param ForeignKeyConstraint $foreignKey
  * @return string
  */
 public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey)
 {
     $sql = '';
     if (strlen($foreignKey->getName())) {
         $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' ';
     }
     $sql .= 'FOREIGN KEY (';
     if (count($foreignKey->getLocalColumns()) == 0) {
         throw new \InvalidArgumentException("Incomplete definition. 'local' required.");
     }
     if (count($foreignKey->getForeignColumns()) == 0) {
         throw new \InvalidArgumentException("Incomplete definition. 'foreign' required.");
     }
     if (strlen($foreignKey->getForeignTableName()) == 0) {
         throw new \InvalidArgumentException("Incomplete definition. 'foreignTable' required.");
     }
     $sql .= implode(', ', $foreignKey->getLocalColumns()) . ') REFERENCES ' . $foreignKey->getForeignTableName() . ' (' . implode(', ', $foreignKey->getForeignColumns()) . ')';
     return $sql;
 }
Exemplo n.º 4
0
 /**
  * Add a message for a foreign key change.
  *
  * @param string               $tableName
  * @param ForeignKeyConstraint $index
  * @param string               $format
  */
 private function addForeignKeysMessage($tableName, ForeignKeyConstraint $foreignKey, $format)
 {
     $this->addMessage($tableName, sprintf($format, implode(', ', $foreignKey->getUnquotedLocalColumns()), $foreignKey->getForeignTableName(), implode(', ' . $foreignKey->getForeignTableName() . '.', $foreignKey->getUnquotedForeignColumns())));
 }
Exemplo n.º 5
0
 /**
  * {@inheritDoc}
  */
 public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey)
 {
     return parent::getForeignKeyDeclarationSQL(new ForeignKeyConstraint($foreignKey->getLocalColumns(), str_replace('.', '__', $foreignKey->getForeignTableName()), $foreignKey->getForeignColumns(), $foreignKey->getName(), $foreignKey->getOptions()));
 }
Exemplo n.º 6
0
 /**
  * Creates a foreign index replacement, which has quoted column names.
  *
  * @param ForeignKeyConstraint $fk
  *
  * @return ForeignKeyConstraint
  */
 private function createForeignKeyReplacement(ForeignKeyConstraint $fk)
 {
     return new ForeignKeyConstraint($this->quoteIdentifiers($fk->getLocalColumns()), $this->platform->quoteIdentifier($fk->getForeignTableName()), $this->quoteIdentifiers($fk->getForeignColumns()), $this->platform->quoteIdentifier($fk->getName()), $fk->getOptions());
 }
Exemplo n.º 7
0
 /**
  * Accept a foreign key for a table
  *
  * @param Table                $localTable   a table object
  * @param ForeignKeyConstraint $fkConstraint a constraint object
  * 
  * @return void
  */
 public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
 {
     if (!isset($this->schemaArray['tables'][$localTable->getName()]['constraint'])) {
         $this->schemaArray['tables'][$localTable->getName()]['constraint'] = array();
     }
     $this->schemaArray['tables'][$localTable->getName()]['constraint'][] = array('name' => $fkConstraint->getName(), 'localcolumns' => $fkConstraint->getLocalColumns(), 'foreigntable' => $fkConstraint->getForeignTableName(), 'foreigncolumns' => $fkConstraint->getForeignColumns(), 'options' => $fkConstraint->getOptions());
 }