protected function processForeignKeys() { /** @var ForeignKey[] $beforeForeignKeys */ $beforeForeignKeys = array(); if (!$this->before->disableForeignKeys) { foreach ($this->before->getForeignKeys() as $foreignKey) { $beforeForeignKeys[$foreignKey->getName()] = $foreignKey; } } $afterForeignKeys = $this->after->getForeignKeys(); if ($this->after->disableForeignKeys) { $afterForeignKeys = array(); } foreach ($afterForeignKeys as $foreignKey) { if (!isset($beforeForeignKeys[$foreignKey->getName()])) { $this->addFkExpression->commaExpr('ADD'); $this->addFkExpression->appendExpr($this->database()->getUtility()->generateForeignKeyExpression($foreignKey)); } else { unset($beforeForeignKeys[$foreignKey->getName()]); } } foreach ($beforeForeignKeys as $foreignKey) { $this->alterLines->commaExpr('DROP FOREIGN KEY ?', new Symbol($foreignKey->getName())); } }