src/Driver/SQLServer/Schema/SQLServerColumn.php
private static function resolveEnum(
        DriverInterface $driver,
        array $schema,
        SQLServerColumn $column
    ) {
        $query = 'SELECT object_definition([o].[object_id]) AS [definition], '
            . "OBJECT_NAME([o].[object_id]) AS [name]\nFROM [sys].[objects] AS [o]\n"
            . "JOIN [sys].[sysconstraints] AS [c] ON [o].[object_id] = [c].[constid]\n"
            . "WHERE [type_desc] = 'CHECK_CONSTRAINT' AND [parent_object_id] = ? AND [c].[colid] = ?";

        $constraints = $driver->query($query, [$schema['object_id'], $schema['column_id']]);

        foreach ($constraints as $constraint) {
            $column->enumConstraint = $constraint['name'];
            $column->constrainedEnum = true;

            $name = preg_quote($driver->identifier($column->getName()));

            //We made some assumptions here...
            if (preg_match_all(
                '/' . $name . '=[\']?([^\']+)[\']?/i',
                $constraint['definition'],
                $matches
            )) {
                //Fetching enum values
                $column->enumValues = $matches[1];
                sort($column->enumValues);
            }
        }
    }
private static function resolveEnum(
        DriverInterface $driver,
        array $schema,
        SQLServerColumn $column
    ) {
        $query = 'SELECT object_definition([o].[object_id]) AS [definition], '
            . "OBJECT_NAME([o].[object_id]) AS [name]\nFROM [sys].[objects] AS [o]\n"
            . "JOIN [sys].[sysconstraints] AS [c] ON [o].[object_id] = [c].[constid]\n"
            . "WHERE [type_desc] = 'CHECK_CONSTRAINT' AND [parent_object_id] = ? AND [c].[colid] = ?";

        $constraints = $driver->query($query, [$schema['object_id'], $schema['column_id']]);

        foreach ($constraints as $constraint) {
            $column->enumConstraint = $constraint['name'];
            $column->constrainedEnum = true;

            $name = preg_quote($driver->identifier($column->getName()));

            //We made some assumptions here...
            if (preg_match_all(
                '/' . $name . '=[\']?([^\']+)[\']?/i',
                $constraint['definition'],
                $matches
            )) {
                //Fetching enum values
                $column->enumValues = $matches[1];
                sort($column->enumValues);
            }
        }
    }
private static function resolveEnum ( DriverInterface $ driver , array $ schema , SQLServerColumn $ column ) { $ query = 'SELECT object_definition([o].[object_id]) AS [definition], ' . "OBJECT_NAME([o].[object_id]) AS [name]\nFROM [sys].[objects] AS [o]\n" . "JOIN [sys].[sysconstraints] AS [c] ON [o].[object_id] = [c].[constid]\n" . "WHERE [type_desc] = 'CHECK_CONSTRAINT' AND [parent_object_id] = ? AND [c].[colid] = ?" ; $ constraints = $ driver -> query ( $ query , [ $ schema [ 'object_id' ] , $ schema [ 'column_id' ] ] ) ; foreach ( $ constraints as $ constraint ) { $ column -> enumConstraint = $ constraint [ 'name' ] ; $ column -> constrainedEnum = true ; $ name = preg_quote ( $ driver -> identifier ( $ column -> getName ( ) ) ) ; //We made some assumptions here... if ( preg_match_all ( '/' . $ name . '=[\']?([^\']+)[\']?/i' , $ constraint [ 'definition' ] , $ matches ) ) { //Fetching enum values $ column -> enumValues = $ matches [ 1 ] ; sort ( $ column -> enumValues ) ; } } }
Resolve enum values if any.

@param DriverInterface $driver
@param array           $schema
@param SQLServerColumn $column
Resolve enum values if any .