lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php
protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
    {
        $result = [];
        foreach ($tableIndexRows as $tableIndex) {
            $indexName = $keyName = $tableIndex['key_name'];
            if ($tableIndex['primary']) {
                $keyName = 'primary';
            }
            $keyName = strtolower($keyName);

            if (! isset($result[$keyName])) {
                $options = [
                    'lengths' => [],
                ];

                if (isset($tableIndex['where'])) {
                    $options['where'] = $tableIndex['where'];
                }

                $result[$keyName] = [
                    'name' => $indexName,
                    'columns' => [],
                    'unique' => ! $tableIndex['non_unique'],
                    'primary' => $tableIndex['primary'],
                    'flags' => $tableIndex['flags'] ?? [],
                    'options' => $options,
                ];
            }

            $result[$keyName]['columns'][]            = $tableIndex['column_name'];
            $result[$keyName]['options']['lengths'][] = $tableIndex['length'] ?? null;
        }

        $eventManager = $this->_platform->getEventManager();

        $indexes = [];
        foreach ($result as $indexKey => $data) {
            $index            = null;
            $defaultPrevented = false;

            if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) {
                $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn);
                $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs);

                $defaultPrevented = $eventArgs->isDefaultPrevented();
                $index            = $eventArgs->getIndex();
            }

            if (! $defaultPrevented) {
                $index = new Index($data['name'], $data['columns'], $data['unique'], $data['primary'], $data['flags'], $data['options']);
            }

            if (! $index) {
                continue;
            }

            $indexes[$indexKey] = $index;
        }

        return $indexes;
    }
protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
    {
        $result = [];
        foreach ($tableIndexRows as $tableIndex) {
            $indexName = $keyName = $tableIndex['key_name'];
            if ($tableIndex['primary']) {
                $keyName = 'primary';
            }
            $keyName = strtolower($keyName);

            if (! isset($result[$keyName])) {
                $options = [
                    'lengths' => [],
                ];

                if (isset($tableIndex['where'])) {
                    $options['where'] = $tableIndex['where'];
                }

                $result[$keyName] = [
                    'name' => $indexName,
                    'columns' => [],
                    'unique' => ! $tableIndex['non_unique'],
                    'primary' => $tableIndex['primary'],
                    'flags' => $tableIndex['flags'] ?? [],
                    'options' => $options,
                ];
            }

            $result[$keyName]['columns'][]            = $tableIndex['column_name'];
            $result[$keyName]['options']['lengths'][] = $tableIndex['length'] ?? null;
        }

        $eventManager = $this->_platform->getEventManager();

        $indexes = [];
        foreach ($result as $indexKey => $data) {
            $index            = null;
            $defaultPrevented = false;

            if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) {
                $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn);
                $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs);

                $defaultPrevented = $eventArgs->isDefaultPrevented();
                $index            = $eventArgs->getIndex();
            }

            if (! $defaultPrevented) {
                $index = new Index($data['name'], $data['columns'], $data['unique'], $data['primary'], $data['flags'], $data['options']);
            }

            if (! $index) {
                continue;
            }

            $indexes[$indexKey] = $index;
        }

        return $indexes;
    }
protected function _getPortableTableIndexesList ( $ tableIndexRows , $ tableName = null ) { $ result = [ ] ; foreach ( $ tableIndexRows as $ tableIndex ) { $ indexName = $ keyName = $ tableIndex [ 'key_name' ] ; if ( $ tableIndex [ 'primary' ] ) { $ keyName = 'primary' ; } $ keyName = strtolower ( $ keyName ) ; if ( ! isset ( $ result [ $ keyName ] ) ) { $ options = [ 'lengths' => [ ] , ] ; if ( isset ( $ tableIndex [ 'where' ] ) ) { $ options [ 'where' ] = $ tableIndex [ 'where' ] ; } $ result [ $ keyName ] = [ 'name' => $ indexName , 'columns' => [ ] , 'unique' => ! $ tableIndex [ 'non_unique' ] , 'primary' => $ tableIndex [ 'primary' ] , 'flags' => $ tableIndex [ 'flags' ] ?? [ ] , 'options' => $ options , ] ; } $ result [ $ keyName ] [ 'columns' ] [ ] = $ tableIndex [ 'column_name' ] ; $ result [ $ keyName ] [ 'options' ] [ 'lengths' ] [ ] = $ tableIndex [ 'length' ] ?? null ; } $ eventManager = $ this -> _platform -> getEventManager ( ) ; $ indexes = [ ] ; foreach ( $ result as $ indexKey => $ data ) { $ index = null ; $ defaultPrevented = false ; if ( $ eventManager !== null && $ eventManager -> hasListeners ( Events :: onSchemaIndexDefinition ) ) { $ eventArgs = new SchemaIndexDefinitionEventArgs ( $ data , $ tableName , $ this -> _conn ) ; $ eventManager -> dispatchEvent ( Events :: onSchemaIndexDefinition , $ eventArgs ) ; $ defaultPrevented = $ eventArgs -> isDefaultPrevented ( ) ; $ index = $ eventArgs -> getIndex ( ) ; } if ( ! $ defaultPrevented ) { $ index = new Index ( $ data [ 'name' ] , $ data [ 'columns' ] , $ data [ 'unique' ] , $ data [ 'primary' ] , $ data [ 'flags' ] , $ data [ 'options' ] ) ; } if ( ! $ index ) { continue ; } $ indexes [ $ indexKey ] = $ index ; } return $ indexes ; }
Aggregates and groups the index results according to the required data result.

@param mixed[][]   $tableIndexRows
@param string|null $tableName

@return Index[]
Aggregates and groups the index results according to the required data result .