类驱动程序
代表一个数据库驱动程序,它包含数据库引擎的所有特性,包括它的 SQL 方言。
常量
属性摘要
-
$_autoQuoting protected
bool
指示驱动程序是否为所有查询执行自动标识符引用。
-
$_baseConfig protected
array<string, mixed>
基础配置,它被合并到用户提供的配置数据中。
-
$_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
将翻译步骤应用于插入查询。
-
_removeAliasesFromConditions() protected
从查询的
WHERE
子句中删除别名。 -
_selectQueryTranslator() protected
将翻译步骤应用于选择查询。
-
_transformDistinct() protected
在重写 DISTINCT 子句后返回传递的查询,以便不支持 "ON" 部分的驱动程序可以提供实际的实现方式。
-
_updateQueryTranslator() protected
将翻译步骤应用于更新查询。
-
beginTransaction() public
启动事务。
-
commitTransaction() public
提交事务。
-
compileQuery() public
将传递的查询转换为此驱动程序的方言,并返回一个包含已转换查询和完整编译 SQL 字符串的实例。
-
config() public
获取用于创建驱动程序的配置数据。
-
connect() abstract public
建立与数据库服务器的连接。
-
createLogger() protected
创建日志记录器实例。
-
createPdo() protected
建立与数据库服务器的连接。
-
createQueryException() protected
从 PDOException 创建一个 QueryException。
-
disableAutoQuoting() public
禁用查询中标识符的自动引用。
-
disableForeignKeySQL() abstract public
获取用于禁用外键的 SQL。
-
disconnect() public
断开与数据库服务器的连接。
-
enableAutoQuoting() public
设置此驱动程序是否应在查询中自动引用标识符。
-
enableForeignKeySQL() abstract public
获取用于启用外键的 SQL。
-
enabled() abstract 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() abstract public
获取架构方言。
-
schemaValue() public
转义用于架构定义的值。
-
setLogger() public
设置一个日志记录器。
-
supports() abstract 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
_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>
_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() ¶ abstract public
connect(): void
建立与数据库服务器的连接。
返回
void
抛出
Cake\Database\Exception\MissingConnectionException
如果无法建立数据库连接。
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 要执行的 SQL,并用 $params 进行插值
-
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 可选 获取最后一个插入值的表名或序列。
返回
string
log() ¶ public
log(Stringable|string $message, array $context = []): bool
使用已配置的日志记录器对象记录消息或查询。
参数
-
Stringable|string
$message 消息字符串或查询。
-
array
$context 可选 日志记录上下文。
返回
bool
newTableSchema() ¶ public
newTableSchema(string $table, array<string, mixed> $columns = []): Cake\Database\Schema\TableSchemaInterface
构造新的 TableSchema。
参数
-
string
$table 表名。
-
array<string, mixed>
$columns 可选 架构的列列表。
返回
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