vendor/jsor/doctrine-postgis/src/Event/ORMSchemaEventSubscriber.php line 8

Open in your IDE?
  1. <?php
  2. namespace Jsor\Doctrine\PostGIS\Event;
  3. use Doctrine\ORM\Tools\Event\GenerateSchemaTableEventArgs;
  4. use Doctrine\ORM\Tools\ToolEvents;
  5. class ORMSchemaEventSubscriber extends DBALSchemaEventSubscriber
  6. {
  7.     public function getSubscribedEvents()
  8.     {
  9.         return array_merge(
  10.             parent::getSubscribedEvents(),
  11.             [
  12.                 ToolEvents::postGenerateSchemaTable,
  13.             ]
  14.         );
  15.     }
  16.     public function postGenerateSchemaTable(GenerateSchemaTableEventArgs $args)
  17.     {
  18.         $table $args->getClassTable();
  19.         foreach ($table->getColumns() as $column) {
  20.             if (!$this->isSpatialColumnType($column)) {
  21.                 continue;
  22.             }
  23.             $normalized $column->getType()->getNormalizedPostGISColumnOptions(
  24.                 $column->getCustomSchemaOptions()
  25.             );
  26.             foreach ($normalized as $name => $value) {
  27.                 $column->setCustomSchemaOption($name$value);
  28.             }
  29.         }
  30.         // Add spatial flags to indexes
  31.         if ($table->hasOption('spatial_indexes')) {
  32.             foreach ((array) $table->getOption('spatial_indexes') as $indexName) {
  33.                 if (!$table->hasIndex($indexName)) {
  34.                     continue;
  35.                 }
  36.                 $table->getIndex($indexName)->addFlag('spatial');
  37.             }
  38.         }
  39.     }
  40. }