/** * Gets the MySQL Foreign Key Definition for an ForeignKey object. * * @param ForeignKey $foreignKey * @return string */ protected function getForeignKeySqlDefinition(ForeignKey $foreignKey) { $def = ''; if ($foreignKey->getConstraint()) { $def .= ' CONSTRAINT ' . $this->quoteColumnName($foreignKey->getConstraint()); } $columnNames = array(); foreach ($foreignKey->getColumns() as $column) { $columnNames[] = $this->quoteColumnName($column); } $def .= ' FOREIGN KEY (' . implode(',', $columnNames) . ')'; $refColumnNames = array(); foreach ($foreignKey->getReferencedColumns() as $column) { $refColumnNames[] = $this->quoteColumnName($column); } $def .= ' REFERENCES ' . $this->quoteTableName($foreignKey->getReferencedTable()->getName()) . ' (' . implode(',', $refColumnNames) . ')'; if ($foreignKey->getOnDelete()) { $def .= ' ON DELETE ' . $foreignKey->getOnDelete(); } if ($foreignKey->getOnUpdate()) { $def .= ' ON UPDATE ' . $foreignKey->getOnUpdate(); } return $def; }
/** * Gets the SqlServer Foreign Key Definition for an ForeignKey object. * * @param ForeignKey $foreignKey * @return string */ protected function getForeignKeySqlDefinition(ForeignKey $foreignKey, $tableName) { $def = ' CONSTRAINT "'; $def .= $tableName . '_' . implode('_', $foreignKey->getColumns()); $def .= '" FOREIGN KEY ("' . implode('", "', $foreignKey->getColumns()) . '")'; $def .= " REFERENCES {$foreignKey->getReferencedTable()->getName()} (\"" . implode('", "', $foreignKey->getReferencedColumns()) . '")'; if ($foreignKey->getOnDelete()) { $def .= " ON DELETE {$foreignKey->getOnDelete()}"; } if ($foreignKey->getOnUpdate()) { $def .= " ON UPDATE {$foreignKey->getOnUpdate()}"; } return $def; }
/** * Gets the foreign key referenced table. * * @return TableMigrationInterface */ public function getReferencedTable() { return $this->foreign->getReferencedTable(); }