类 SqlserverCompiler
负责将 Query 对象编译成其 SQL Server 的 SQL 表示形式
属性摘要
-
$_deleteParts protected
list<string>
用于生成 DELETE 语句的查询子句列表。
-
$_insertParts protected
list<string>
用于生成 INSERT 语句的查询子句列表。
-
$_quotedSelectAliases protected
bool
指示 SELECT 子句中的别名是否需要始终加引号。
-
$_selectParts protected
list<string>
用于生成 SELECT 语句的查询子句列表。
-
$_templates protected
array<string, string>
用于编译此查询的 SQL 的 sprintf 模板列表。一些子句可以像内部部分的直接串联一样构建,这些子句列在这里。
-
$_updateParts protected
list<string>
用于生成 UPDATE 语句的查询子句列表。
方法摘要
-
_buildFromPart() protected
用于构建 FROM 子句的字符串表示的辅助函数,它构造表格列表,注意别名并转换表达式对象为字符串。
-
_buildHavingPart() protected
用于构建 HAVING 子句的字符串表示的辅助函数,它构造字段列表,注意别名并转换表达式对象为字符串。
-
_buildInsertPart() protected
生成 SQL 查询的 INSERT 部分。
-
_buildIntersectPart() protected
构建此查询中所有 INTERSECT 子句的 SQL 字符串,在处理查询对象时,它还会使用它们配置的 SQL 方言转换它们。
-
_buildJoinPart() protected
用于构建多个 JOIN 子句的字符串表示的辅助函数,它构造连接列表,注意别名并将表达式对象转换为要连接的表和要使用的条件中的字符串。
-
_buildLimitPart() protected
生成 SQL 查询的 LIMIT 部分。
-
_buildModifierPart() protected
构建 SQL 修饰符片段。
-
_buildSelectPart() protected
用于构建 SELECT 子句的字符串表示的辅助函数,它构造字段列表,注意别名并将表达式对象转换为字符串。此函数还为查询构造 DISTINCT 子句。
-
_buildSetOperationPart() protected
构建此查询中所有
operation
子句的 SQL 字符串,在处理查询对象时,它还会使用它们配置的 SQL 方言转换它们。 -
_buildSetPart() protected
用于生成 SET 表达式 SQL 的辅助函数。
-
_buildUnionPart() protected
构建此查询中所有 UNION 子句的 SQL 字符串,在处理查询对象时,它还会使用它们配置的 SQL 方言转换它们。
-
_buildUpdatePart() protected
构建 UPDATE 的 SQL 片段。
-
_buildValuesPart() protected
构建 INSERT INTO 的 SQL 片段。
-
_buildWindowPart() protected
用于构建窗口子句的字符串表示的辅助函数。
-
_buildWithPart() protected
用于构建
WITH
子句的字符串表示的辅助函数,它构造 CTE 定义列表,不生成RECURSIVE
关键字,它既不需要也不有效。 -
_sqlCompiler() protected
返回一个闭包,该闭包可用于编译此查询的 SQL 字符串表示形式。
-
_stringifyExpressions() protected
用于将数组中的 ExpressionInterface 对象转换为其字符串表示形式的辅助函数。
-
compile() public
在使用提供的生成器为绑定值生成占位符后,返回提供的查询的 SQL 表示形式
方法详细信息
_buildFromPart() ¶ protected
_buildFromPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于构建 FROM 子句的字符串表示的辅助函数,它构造表格列表,注意别名并转换表达式对象为字符串。
参数
-
array
$parts 要转换为字符串的表列表。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildHavingPart() ¶ protected
_buildHavingPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于构建 HAVING 子句的字符串表示的辅助函数,它构造字段列表,注意别名并转换表达式对象为字符串。
参数
-
array
$parts 要转换为字符串的字段列表
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildInsertPart() ¶ protected
_buildInsertPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
生成 SQL 查询的 INSERT 部分。
为了更好地处理并发和低事务隔离级别,我们还包含一个 OUTPUT 子句,这样我们就可以确保获得插入行的回传数据。
参数
-
array
$parts 要构建的部件。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildIntersectPart() ¶ protected
_buildIntersectPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
构建此查询中所有 INTERSECT 子句的 SQL 字符串,在处理查询对象时,它还会使用它们配置的 SQL 方言转换它们。
参数
-
array
$parts 要使用 INTERSECT 操作的查询列表。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildJoinPart() ¶ protected
_buildJoinPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于构建多个 JOIN 子句的字符串表示的辅助函数,它构造连接列表,注意别名并将表达式对象转换为要连接的表和要使用的条件中的字符串。
参数
-
array
$parts 要转换为字符串的连接列表。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildLimitPart() ¶ protected
_buildLimitPart(int $limit, Cake\Database\Query $query): string
生成 SQL 查询的 LIMIT 部分。
参数
-
int
$limit LIMIT 子句。
-
Cake\Database\Query
$query 正在编译的查询。
返回值
string
_buildModifierPart() ¶ protected
_buildModifierPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
构建 SQL 修饰符片段。
参数
-
array
$parts 查询修饰符部分。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildSelectPart() ¶ protected
_buildSelectPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于构建 SELECT 子句的字符串表示的辅助函数,它构造字段列表,注意别名并将表达式对象转换为字符串。此函数还为查询构造 DISTINCT 子句。
参数
-
array
$parts 要转换为字符串的字段列表
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildSetOperationPart() ¶ 受保护
_buildSetOperationPart(string $operation, array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
构建此查询中所有operation
子句的 SQL 字符串,在处理查询对象时,它还会使用它们配置的 SQL 方言转换它们。
参数
-
字符串
$operation -
array
$parts -
Cake\Database\Query
$query -
Cake\Database\ValueBinder
$binder
返回值
string
_buildSetPart() ¶ 受保护
_buildSetPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于生成 SET 表达式 SQL 的辅助函数。
参数
-
array
$parts 要设置的键值对列表。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildUnionPart() ¶ 受保护
_buildUnionPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
构建此查询中所有 UNION 子句的 SQL 字符串,在处理查询对象时,它还会使用它们配置的 SQL 方言转换它们。
参数
-
array
$parts 使用 UNION 操作的查询列表
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildUpdatePart() ¶ 受保护
_buildUpdatePart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
构建 UPDATE 的 SQL 片段。
参数
-
array
$parts 更新部分。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildValuesPart() ¶ 受保护
_buildValuesPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
构建 INSERT INTO 的 SQL 片段。
参数
-
array
$parts 值部分。
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildWindowPart() ¶ 受保护
_buildWindowPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于构建窗口子句的字符串表示的辅助函数。
参数
-
array
$parts 要转换为字符串的窗口列表
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_buildWithPart() ¶ 受保护
_buildWithPart(arrayCake\Database\Expression\CommonTableExpression> $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
用于构建WITH
子句的字符串表示的辅助函数,它构造 CTE 定义列表,不生成RECURSIVE
关键字,它既不需要也不有效。
参数
-
arrayCake\Database\Expression\CommonTableExpression>
$parts 要转换为字符串的 CTE 列表
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
string
_sqlCompiler() ¶ 受保护
_sqlCompiler(string $sql, Cake\Database\Query $query, Cake\Database\ValueBinder $binder): Closure
返回一个闭包,该闭包可用于编译此查询的 SQL 字符串表示形式。
参数
-
字符串
$sql 要追加的初始 sql 字符串
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
返回值
闭包
_stringifyExpressions() ¶ 受保护
_stringifyExpressions(array $expressions, Cake\Database\ValueBinder $binder, bool $wrap = true): array
用于将数组中的 ExpressionInterface 对象转换为其字符串表示形式的辅助函数。
参数
-
数组
$expressions 字符串和 ExpressionInterface 对象列表
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器。
-
布尔值
$wrap 可选 是否用括号包装每个表达式对象
返回值
数组
compile() ¶ 公共
compile(Cake\Database\Query $query, Cake\Database\ValueBinder $binder): string
在使用提供的生成器为绑定值生成占位符后,返回提供的查询的 SQL 表示形式
参数
-
Cake\Database\Query
$query 正在编译的查询。
-
Cake\Database\ValueBinder
$binder 用于生成参数占位符的值绑定器
返回值
string
属性详情
$_templates ¶ 受保护
用于编译此查询的 SQL 的 sprintf 模板列表。一些子句可以像内部部分的直接串联一样构建,这些子句列在这里。
类型
array<string, string>