/**
  * Defines the foreign keys for the provided table
  * @param Table $table table definition
  * @return null
  */
 public function defineForeignKeys(Table $table)
 {
     $tableName = $table->getName();
     $databaseTable = $this->getTable($tableName);
     $foreignKeys = $table->getForeignKeys();
     $foreignKeysToDrop = array();
     foreach ($foreignKeys as $fieldName => $foreignKey) {
         if (!$databaseTable->hasForeignKey($fieldName)) {
             continue;
         }
         $databaseForeignKey = $databaseTable->getForeignKey($fieldName);
         if ($foreignKey->equals($databaseForeignKey)) {
             unset($foreignKeys[$fieldName]);
         } else {
             $foreignKeysToDrop[] = $this->connection->quoteIdentifier($databaseForeignKey->getName());
         }
     }
     $tableName = $this->connection->quoteIdentifier($tableName);
     foreach ($foreignKeysToDrop as $foreignKey) {
         $this->connection->execute('ALTER TABLE ' . $tableName . ' DROP FOREIGN KEY ' . $foreignKey);
     }
     foreach ($foreignKeys as $foreignKey) {
         $name = $this->connection->quoteIdentifier($foreignKey->getName());
         $fieldName = $this->connection->quoteIdentifier($foreignKey->getFieldName());
         $referenceTableName = $this->connection->quoteIdentifier($foreignKey->getReferenceTableName());
         $referenceFieldName = $this->connection->quoteIdentifier($foreignKey->getReferenceFieldName());
         $this->connection->execute('ALTER TABLE ' . $tableName . ' ADD CONSTRAINT ' . $name . ' FOREIGN KEY (' . $fieldName . ') REFERENCES ' . $referenceTableName . ' (' . $referenceFieldName . ') ON DELETE SET NULL ON UPDATE NO ACTION');
     }
 }