/** * {@inheritdoc} * * @return QueryResult * @event statement($statement, $query, $parameters, $database): statement */ public function query($query, array $parameters = []) { return $this->driver->query($query, $parameters); }
/** * Check if column is enum. * * @param array $schema * @param Driver $tableDriver */ private function resolveEnum(array $schema, $tableDriver) { $query = "SELECT object_definition(o.object_id) AS [definition],\n OBJECT_NAME(o.OBJECT_ID) AS [name]\n FROM sys.objects AS o\n JOIN sys.sysconstraints AS [c]\n ON o.object_id = [c].constid\n WHERE type_desc = 'CHECK_CONSTRAINT' AND parent_object_id = ? AND [c].colid = ?"; $constraints = $tableDriver->query($query, [$schema['object_id'], $schema['column_id']]); foreach ($constraints as $checkConstraint) { $this->enumConstraint = $checkConstraint['name']; $name = preg_quote($this->getName(true)); //We made some assumptions here... if (preg_match_all('/' . $name . '=[\']?([^\']+)[\']?/i', $checkConstraint['definition'], $matches)) { $this->enumValues = $matches[1]; sort($this->enumValues); } } }