类 Sqlserver
SQLServer 驱动程序。
常量
属性摘要
-
$_autoQuoting protected
bool
指示驱动程序是否为所有查询执行自动标识符引用。
-
$_baseConfig protected
array<string, mixed>
Sqlserver 驱动程序的基本配置设置。
-
$_config protected
array<string, mixed>
配置数据。
-
$_endQuote protected
string
用于结束数据库标识符引用的字符串,以确保其安全。
-
$_schemaDialect protected
Cake\Database\Schema\SchemaDialect
此驱动程序的模式方言。
-
$_startQuote protected
string
用于开始数据库标识符引用的字符串,以确保其安全。
-
$_version protected
string|null
服务器版本。
-
$connectRetries protected
int
上次连接重试尝试次数。
-
$logger protected
?LoggerInterface
日志记录器实例。
-
$pdo protected
PDO|null
PDO 实例。
-
$quoter protected
Cake\Database\IdentifierQuoter|null
标识符引用器。
方法摘要
-
__construct() public
构造函数。
-
__debugInfo() public
返回一个数组,可用于描述此对象的内部状态。
-
__destruct() public
析构函数。
-
_deleteQueryTranslator() protected
将翻译步骤应用于删除查询。
-
_expressionTranslators() protected
返回一个关联数组,其中包含将表达式对象转换为符合特定 SQL 方言的方法。键是类名,值是此类中的方法。
-
_insertQueryTranslator() protected
将翻译步骤应用于插入查询。
-
_pagingSubquery() protected
为较旧版本的 SQLserver 生成分页子查询。
-
_removeAliasesFromConditions() protected
从查询的
WHERE
子句中删除别名。 -
_selectQueryTranslator() protected
将翻译步骤应用于选择查询。
-
_transformDistinct() protected
在重写 DISTINCT 子句后返回传递的查询,以便不支持“ON”部分的驱动程序可以提供实际应该执行的方式。
-
_transformFunctionExpression() protected
接收 FunctionExpression 并将其更改,使其符合此 SQL 方言。
-
_transformTupleComparison() protected
接收 TupleExpression 并将其更改,使其符合此 SQL 方言。
-
_updateQueryTranslator() protected
将翻译步骤应用于更新查询。
-
beginTransaction() public
开始事务。
-
commitTransaction() public
提交事务。
-
compileQuery() public
将传递的查询转换为此驱动程序的方言,并返回转换后的查询实例以及完全编译的 SQL 字符串。
-
config() public
获取用于创建驱动程序的配置数据。
-
connect() public
建立与数据库服务器的连接。
-
createLogger() protected
创建日志记录器实例。
-
createPdo() protected
建立与数据库服务器的连接。
-
createQueryException() protected
从 PDOException 创建 QueryException。
-
disableAutoQuoting() public
在查询中禁用标识符的自动引用。
-
disableForeignKeySQL() public
获取用于禁用外键的 SQL。
-
disconnect() public
断开与数据库服务器的连接。
-
enableAutoQuoting() public
设置此驱动程序是否应在查询中自动引用标识符。
-
enableForeignKeySQL() public
获取用于启用外键的 SQL。
-
enabled() public
返回 PHP 是否能够使用此驱动程序连接到数据库。
-
exec() public
使用内部 PDO 实例执行 SQL 查询。
-
execute() public
使用 $params 执行查询以插值值,并使用 $types 作为这些参数的提示。
-
executeStatement() protected
执行语句并记录查询字符串。
-
getLogger() public
获取日志记录器实例。
-
getMaxAliasLength() public
返回允许的最大别名长度。
-
getPdo() protected
获取 PDO 连接实例。
-
getResultSetDecorators() protected
在选择查询的情况下返回要应用于结果集的装饰器。
-
getRole() public
返回此驱动程序执行的连接角色。
-
inTransaction() public
返回连接是否处于活动事务中。
-
isAutoQuotingEnabled() public
返回此驱动程序是否应在查询中自动引用标识符。
-
isConnected() public
检查驱动程序是否已连接。
-
lastInsertId() public
返回数据库中为表或序列生成的最后一个 ID。
-
log() public
使用配置的日志记录器对象记录消息或查询。
-
newCompiler() public
-
newTableSchema() public
构造新的 TableSchema。
-
prepare() public
准备要执行的 SQL 语句。
-
quoteIdentifier() public
引用数据库标识符(列名、表名等),以便在查询中安全使用,避免使用保留字。
-
quoter() public
获取标识符引用器实例。
-
releaseSavePointSQL() public
返回释放先前创建的保存点的 SQL 片段。
-
rollbackSavePointSQL() public
返回回滚先前创建的保存点的 SQL 片段。
-
rollbackTransaction() public
回滚事务。
-
run() public
在为特定驱动程序方言编译后执行提供的查询,并返回执行的 Statement 对象。
-
savePointSQL() public
返回创建新的事务保存点的 SQL 片段。
-
schema() public
返回正在使用的模式名称。
-
schemaDialect() public
获取模式方言。
-
schemaValue() public
转义在模式定义中使用时的值。
-
setLogger() public
设置日志记录器。
-
supports() public
返回驱动程序是否支持该功能。
-
transformQuery() protected
转换查询以适应正在使用的 SQL 方言的任何特殊情况。
-
version() public
返回连接的服务器版本。
方法详情
__construct() ¶ public
__construct(array<string, mixed> $config = [])
构造函数。
参数
-
array<string, mixed>
$config optional 驱动程序的配置。
抛出
InvalidArgumentException
__debugInfo() ¶ public
__debugInfo(): array<string, mixed>
返回一个数组,可用于描述此对象的内部状态。
返回值
array<string, mixed>
_deleteQueryTranslator() ¶ protected
_deleteQueryTranslator(Cake\Database\Query\DeleteQuery $query): Cake\Database\Query\DeleteQuery
将翻译步骤应用于删除查询。
删除删除查询条件中的别名,因为大多数数据库方言不支持删除查询中的别名。这也删除了表名中的别名,因为它们通常也不起作用。
我们有意不支持使用联接的删除,因为它们的支持更差。
参数
-
Cake\Database\Query\DeleteQuery
$query 要翻译的查询
返回值
Cake\Database\Query\DeleteQuery
_expressionTranslators() ¶ protected
_expressionTranslators(): array<class-string, string>
返回一个关联数组,其中包含将表达式对象转换为符合特定 SQL 方言的方法。键是类名,值是此类中的方法。
返回值
array<class-string, string>
_insertQueryTranslator() ¶ protected
_insertQueryTranslator(Cake\Database\Query\InsertQuery $query): Cake\Database\Query\InsertQuery
将翻译步骤应用于插入查询。
参数
-
Cake\Database\Query\InsertQuery
$query 要翻译的查询
返回值
Cake\Database\Query\InsertQuery
_pagingSubquery() ¶ protected
_pagingSubquery(Cake\Database\Query\SelectQuery<mixed> $original, int|null $limit, int|null $offset): Cake\Database\Query\SelectQuery<mixed>
为较旧版本的 SQLserver 生成分页子查询。
在 SQL Server 2012 之前,没有与 LIMIT OFFSET 等效的东西,因此必须使用子查询。
参数
-
Cake\Database\Query\SelectQuery<mixed>
$original 要包装在子查询中的查询。
-
int|null
$limit 要获取的行数。
-
int|null
$offset 要偏移的行数。
返回值
Cake\Database\Query\SelectQuery<mixed>
_removeAliasesFromConditions() ¶ protected
_removeAliasesFromConditions(Cake\Database\Query\UpdateQueryCake\Database\Query\DeleteQuery $query): Cake\Database\Query\UpdateQueryCake\Database\Query\DeleteQuery
从查询的WHERE
子句中删除别名。
参数
-
Cake\Database\Query\UpdateQueryCake\Database\Query\DeleteQuery
$query 要处理的查询。
返回值
Cake\Database\Query\UpdateQueryCake\Database\Query\DeleteQuery
抛出
Cake\Database\Exception\DatabaseException
如果处理后的查询包含任何联接,因为从条件中删除别名可能会破坏对联接表的引用。
_selectQueryTranslator() ¶ protected
_selectQueryTranslator(Cake\Database\Query\SelectQuery<mixed> $query): Cake\Database\Query\SelectQuery<mixed>
将翻译步骤应用于选择查询。
参数
-
Cake\Database\Query\SelectQuery<mixed>
$query
返回值
Cake\Database\Query\SelectQuery<mixed>
_transformDistinct() ¶ protected
_transformDistinct(Cake\Database\Query\SelectQuery<mixed> $query): Cake\Database\Query\SelectQuery<mixed>
在重写 DISTINCT 子句后返回传递的查询,以便不支持“ON”部分的驱动程序可以提供实际应该执行的方式。
参数
-
Cake\Database\Query\SelectQuery<mixed>
$query
返回值
Cake\Database\Query\SelectQuery<mixed>
_transformFunctionExpression() ¶ protected
_transformFunctionExpression(Cake\Database\Expression\FunctionExpression $expression): void
接收 FunctionExpression 并将其更改,使其符合此 SQL 方言。
参数
-
Cake\Database\Expression\FunctionExpression
$expression 要转换为 TSQL 的函数表达式。
返回值
void
_transformTupleComparison() ¶ protected
_transformTupleComparison(Cake\Database\Expression\TupleComparison $expression, Cake\Database\Query $query): void
接收 TupleExpression 并将其更改,使其符合此 SQL 方言。
它将类似于 '(a, b) IN ((c, d), (e, f))' 的表达式转换为等效的表达式,形式为 '((a = c) AND (b = d)) OR ((a = e) AND (b = f))'。
它还可以转换转换表达式,其中右侧是查询,该查询选择与左侧表达式中的元素相同数量的列
(a, b) IN (SELECT c, d FROM a_table) 转换为
1 = (SELECT 1 FROM a_table WHERE (a = c) AND (b = d))
参数
-
Cake\Database\Expression\TupleComparison
$expression 要转换的表达式
-
Cake\Database\Query
$query 要更新的查询。
返回值
void
_updateQueryTranslator() ¶ protected
_updateQueryTranslator(Cake\Database\Query\UpdateQuery $query): Cake\Database\Query\UpdateQuery
将翻译步骤应用于更新查询。
删除更新查询条件中的别名,因为并非所有数据库方言都支持更新查询中的别名。
与删除查询类似,目前不支持更新查询的联接。
参数
-
Cake\Database\Query\UpdateQuery
$query 要翻译的查询
返回值
Cake\Database\Query\UpdateQuery
compileQuery() ¶ public
compileQuery(Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
将传递的查询转换为此驱动程序的方言,并返回转换后的查询实例以及完全编译的 SQL 字符串。
参数
-
Cake\Database\Query
$query 要编译的查询。
-
Cake\Database\ValueBinder
$binder 要使用的值绑定器。
返回值
string
connect() ¶ public
connect(): void
建立与数据库服务器的连接。
请注意,PDO::ATTR_PERSISTENT 属性不受 SQL Server PHP PDO 驱动程序的支持。因此,在连接到 SQL Server 时,您不能使用持久配置选项(有关更多信息,请参见:https://github.com/Microsoft/msphpsql/issues/65)。
返回值
void
抛出
InvalidArgumentException
如果驱动程序配置中存在不受支持的设置
createLogger() ¶ protected
createLogger(string|null $className): Psr\Log\LoggerInterface
创建日志记录器实例。
参数
-
string|null
$className 日志记录器的类名
返回值
Psr\Log\LoggerInterface
createPdo() ¶ protected
createPdo(string $dsn, array<string, mixed> $config): PDO
建立与数据库服务器的连接。
参数
-
string
$dsn 特定于驱动程序的 PDO-DSN
-
array<string, mixed>
$config 用于创建连接的配置
返回值
PDO
createQueryException() ¶ protected
createQueryException(PDOException $exception, Cake\Database\StatementInterface $statement, array|null $params = null): Cake\Database\Exception\QueryException
从 PDOException 创建 QueryException。
参数
-
PDOException
$exception -
Cake\Database\StatementInterface
$statement -
array|null
$params optional
返回值
Cake\Database\Exception\QueryException
enableAutoQuoting() ¶ public
enableAutoQuoting(bool $enable = true): $this
设置此驱动程序是否应在查询中自动引用标识符。
参数
-
bool
$enable optional 是否启用自动引用
返回值
$this
exec() ¶ public
exec(string $sql): int|false
使用内部 PDO 实例执行 SQL 查询。
参数
-
string
$sql SQL 查询。
返回值
int|false
execute() ¶ public
execute(string $sql, array $params = [], array $types = []): Cake\Database\StatementInterface
使用 $params 执行查询以插值值,并使用 $types 作为这些参数的提示。
参数
-
string
$sql 要执行并用 $params 进行插值的 SQL 语句
-
array
$params optional 要作为值在 $sql 中进行插值的 params 列表或关联数组。
-
array
$types optional 用于在查询中对值进行类型转换的类型列表或关联数组。
返回值
Cake\Database\StatementInterface
executeStatement() ¶ protected
executeStatement(Cake\Database\StatementInterface $statement, array|null $params = null): void
执行语句并记录查询字符串。
参数
-
Cake\Database\StatementInterface
$statement 要执行的语句。
-
array|null
$params optional 要绑定到查询的值列表。
返回值
void
getLogger() ¶ public
getLogger(): Psr\Log\LoggerInterface|null
获取日志记录器实例。
返回值
Psr\Log\LoggerInterface|null
getMaxAliasLength() ¶ public
getMaxAliasLength(): int|null
返回允许的最大别名长度。
这可能与列的最大标识符长度不同。
返回值
int|null
getResultSetDecorators() ¶ protected
getResultSetDecorators(Cake\Database\Query|string $query): arrayClosure>
在选择查询的情况下返回要应用于结果集的装饰器。
参数
-
Cake\Database\Query|string
$query 要装饰的查询。
返回值
arrayClosure>
lastInsertId() ¶ public
lastInsertId(string|null $table = null): string
返回数据库中为表或序列生成的最后一个 ID。
参数
-
string|null
$table optional 要从中获取最后插入值的表名或序列。
返回值
string
log() ¶ public
log(Stringable|string $message, array $context = []): bool
使用配置的日志记录器对象记录消息或查询。
参数
-
Stringable|string
$message 消息字符串或查询。
-
array
$context optional 日志记录上下文。
返回值
bool
newCompiler() ¶ public
newCompiler(): Cake\Database\SqlserverCompiler
返回值
Cake\Database\SqlserverCompiler
newTableSchema() ¶ public
newTableSchema(string $table, array<string, mixed> $columns = []): Cake\Database\Schema\TableSchemaInterface
构造新的 TableSchema。
参数
-
string
$table 表名。
-
array<string, mixed>
$columns optional 架构的列列表。
返回值
Cake\Database\Schema\TableSchemaInterface
prepare() ¶ public
prepare(Cake\Database\Query|string $query): Cake\Database\StatementInterface
准备要执行的 SQL 语句。
参数
-
Cake\Database\Query|string
$query
返回值
Cake\Database\StatementInterface
quoteIdentifier() ¶ public
quoteIdentifier(string $identifier): string
引用数据库标识符(列名、表名等),以便在查询中安全使用,避免使用保留字。
参数
-
string
$identifier 要引用的标识符。
返回值
string
quoter() ¶ public
quoter(): Cake\Database\IdentifierQuoter
获取标识符引用器实例。
返回值
Cake\Database\IdentifierQuoter
releaseSavePointSQL() ¶ public
releaseSavePointSQL(string|int $name): string
返回释放先前创建的保存点的 SQL 片段。
参数
-
string|int
$name
返回值
string
rollbackSavePointSQL() ¶ public
rollbackSavePointSQL(string|int $name): string
返回回滚先前创建的保存点的 SQL 片段。
参数
-
string|int
$name
返回值
string
run() ¶ public
run(Cake\Database\Query $query): Cake\Database\StatementInterface
在为特定驱动程序方言编译后执行提供的查询,并返回执行的 Statement 对象。
参数
-
Cake\Database\Query
$query 要执行的查询。
返回值
Cake\Database\StatementInterface
savePointSQL() ¶ public
savePointSQL(string|int $name): string
返回创建新的事务保存点的 SQL 片段。
参数
-
string|int
$name
返回值
string
schemaDialect() ¶ public
schemaDialect(): Cake\Database\Schema\SchemaDialect
获取模式方言。
由 {@link \Cake\Database\Schema} 包用于反映架构和生成架构。
如果使用此驱动程序的所有表都指定了它们自己的架构,则此方法可能会返回 null。
返回值
Cake\Database\Schema\SchemaDialect
schemaValue() ¶ public
schemaValue(mixed $value): string
转义在模式定义中使用时的值。
参数
-
mixed
$value 要转义的值。
返回值
string
setLogger() ¶ public
setLogger(LoggerInterface $logger): void
设置日志记录器。
参数
-
LoggerInterface
$logger
返回值
void
supports() ¶ public
supports(Cake\Database\DriverFeatureEnum $feature): bool
返回驱动程序是否支持该功能。
对于未知功能,应返回 false。
参数
-
Cake\Database\DriverFeatureEnum
$feature
返回值
bool
transformQuery() ¶ protected
transformQuery(Cake\Database\Query $query): Cake\Database\Query
转换查询以适应正在使用的 SQL 方言的任何特殊情况。
如果启用了自动引用,它还会引用标识符。
参数
-
Cake\Database\Query
$query 要转换的查询。
返回值
Cake\Database\Query