protected function _ifNullableChangesThenDeleteForeignKeys(Garp_Spawn_MySql_Column $sourceColumn, array $diffProperties) { $source = $this->getSource(); if (in_array('nullable', $diffProperties)) { foreach ($source->keys->foreignKeys as $fk) { if ($fk->localColumn === $sourceColumn->name) { Garp_Spawn_MySql_ForeignKey::delete($source->name, $fk); $source->keys->droppedForeignKeyNamesDuringColumnSync[] = $fk->name; break; } } } }
protected function _removeForeignKeys(array $keysToRemove) { $tableName = $this->getSource()->getTableName(); foreach ($keysToRemove as $key) { if (!(in_array($key->name, $this->droppedForeignKeyNamesDuringColumnSync) || Garp_Spawn_MySql_ForeignKey::delete($tableName, $key))) { throw new Exception("Could not delete '{$key->localColumn}' foreign key."); } } }