Storm\Drivers\Platforms\Mysql\Syncing\DatabaseBuilder::BuildIndexes PHP Метод

BuildIndexes() приватный Метод

private BuildIndexes ( Storm\Drivers\Base\Relational\Queries\IConnection $Connection, array $Columns, $DatabaseName, $TableName )
$Connection Storm\Drivers\Base\Relational\Queries\IConnection
$Columns array
    private function BuildIndexes(IConnection $Connection, array $Columns, $DatabaseName, $TableName)
    {
        $QueryBuilder = $Connection->QueryBuilder();
        $QueryBuilder->Append('SELECT * FROM `INFORMATION_SCHEMA`.`STATISTICS` WHERE TRUE ');
        $QueryBuilder->AppendValue('AND `TABLE_SCHEMA` = # ', $DatabaseName);
        $QueryBuilder->AppendValue('AND `TABLE_NAME` = # ', $TableName);
        $QueryBuilder->AppendValue('AND `INDEX_NAME` != # ', 'PRIMARY');
        $QueryBuilder->Append('AND `INDEX_NAME` NOT IN (');
        $QueryBuilder->Append('SELECT `CONSTRAINT_NAME` FROM `INFORMATION_SCHEMA`.`REFERENTIAL_CONSTRAINTS` WHERE TRUE ');
        $QueryBuilder->AppendValue('AND `CONSTRAINT_SCHEMA` = # ', $DatabaseName);
        $QueryBuilder->AppendValue('AND `TABLE_NAME` = # ', $TableName);
        $QueryBuilder->Append(')');
        $IndexRowGroups = $this->GroupColumnsByKey($QueryBuilder->Build()->Execute()->FetchAll(), 'INDEX_NAME');
        $Indexes = [];
        foreach ($IndexRowGroups as $IndexRows) {
            $Indexes[] = $this->BuildIndex($Columns, $IndexRows);
        }
        return $Indexes;
    }