类 WindowExpression
这表示聚合函数和窗口函数使用的 SQL 窗口表达式。
常量
属性概述
-
$exclusion protected
string|null
-
$frame protected
array|null
-
$name protected
Cake\Database\Expression\IdentifierExpression
-
$order protected
Cake\Database\Expression\OrderByExpression|null
-
$partitions protected
array<Cake\Database\ExpressionInterface>
方法概述
-
__clone() public
克隆此对象及其表达式子树。
-
__construct() public
-
buildOffsetSql() protected
构建框架偏移量 SQL。
-
excludeCurrent() public
添加当前行框架排除。
-
excludeGroup() public
添加组框架排除。
-
excludeTies() public
添加平局框架排除。
-
frame() public
向窗口添加框架。
-
groups() public
向窗口添加一个简单的组框架。
-
isNamedOnly() public
返回是否仅是一个命名的窗口表达式。
-
name() public
设置窗口名称。
-
order() public
向窗口添加一个或多个 order by 子句。
-
orderBy() public
向窗口添加一个或多个 order by 子句。
-
partition() public
向窗口添加一个或多个分区表达式。
-
range() public
向窗口添加一个简单的范围框架。
-
rows() public
向窗口添加一个简单的行框架。
-
sql() public
将节点转换为 SQL 字符串片段。
-
traverse() public
递归地遍历表达式的每一部分,并对表达式树的每一级执行回调,将当前迭代的表达式的实例作为第一个参数传递。
方法详细说明
buildOffsetSql() ¶ protected
buildOffsetSql(Cake\Database\ValueBinder $binder, Cake\Database\ExpressionInterface|string|int|null $offset, string $direction): string
构建框架偏移量 SQL。
参数
-
Cake\Database\ValueBinder
$binder 值绑定器
-
Cake\Database\ExpressionInterface|string|int|null
$offset 框架偏移量
-
string
$direction 框架偏移方向
返回值
string
frame() ¶ public
frame(string $type, Cake\Database\ExpressionInterface|string|int|null $startOffset, string $startDirection, Cake\Database\ExpressionInterface|string|int|null $endOffset, string $endDirection): $this
向窗口添加框架。
如果您需要简单的“BETWEEN offset PRECEDING 和 offset FOLLOWING”框架,请使用 range()
、rows()
或 groups()
帮助器。
您可以为框架起点和框架终点指定任何方向。
对于 $startOffset
和 $endOffset
来说
0
- 'CURRENT ROW'null
- 'UNBOUNDED'
参数
-
string
$type -
Cake\Database\ExpressionInterface|string|int|null
$startOffset -
string
$startDirection -
Cake\Database\ExpressionInterface|string|int|null
$endOffset -
string
$endDirection
返回值
$this
groups() ¶ public
groups(int|null $start, int|null $end = 0): $this
向窗口添加一个简单的组框架。
有关详细信息,请参阅 range()
。
参数
-
int|null
$start -
int|null
$end 可选
返回值
$this
isNamedOnly() ¶ public
isNamedOnly(): bool
返回是否仅是一个命名的窗口表达式。
这些窗口表达式仅指定一个命名窗口,并未指定它们自己的分区、框架或排序。
返回值
bool
order() ¶ public
order(Cake\Database\ExpressionInterfaceClosure|arrayCake\Database\ExpressionInterface|string>|string $fields): $this
向窗口添加一个或多个 order by 子句。
参数
-
Cake\Database\ExpressionInterfaceClosure|array<Cake\Database\ExpressionInterface|string>|string
$fields
返回值
$this
orderBy() ¶ public
orderBy(Cake\Database\ExpressionInterfaceClosure|arrayCake\Database\ExpressionInterface|string>|string $fields): $this
向窗口添加一个或多个 order by 子句。
参数
-
Cake\Database\ExpressionInterfaceClosure|array<Cake\Database\ExpressionInterface|string>|string
$fields
返回值
$this
partition() ¶ public
partition(Cake\Database\ExpressionInterfaceClosure|arrayCake\Database\ExpressionInterface|string>|string $partitions): $this
向窗口添加一个或多个分区表达式。
参数
-
Cake\Database\ExpressionInterfaceClosure|array<Cake\Database\ExpressionInterface|string>|string
$partitions
返回值
$this
range() ¶ public
range(Cake\Database\ExpressionInterface|string|int|null $start, Cake\Database\ExpressionInterface|string|int|null $end = 0): $this
向窗口添加一个简单的范围框架。
$start
:
0
- 'CURRENT ROW'null
- 'UNBOUNDED PRECEDING'- offset - 'offset PRECEDING'
$end
:
0
- 'CURRENT ROW'null
- 'UNBOUNDED FOLLOWING'- offset - 'offset FOLLOWING'
如果您需要在框架起点使用“FOLLOWING”或在框架终点使用“PRECEDING”,请改为使用 frame()
。
参数
-
Cake\Database\ExpressionInterface|string|int|null
$start -
Cake\Database\ExpressionInterface|string|int|null
$end 可选
返回值
$this
rows() ¶ public
rows(int|null $start, int|null $end = 0): $this
向窗口添加一个简单的行框架。
有关详细信息,请参阅 range()
。
参数
-
int|null
$start -
int|null
$end 可选
返回值
$this
sql() ¶ public
sql(Cake\Database\ValueBinder $binder): string
将节点转换为 SQL 字符串片段。
参数
-
Cake\Database\ValueBinder
$binder
返回值
string
traverse() ¶ public
traverse(Closure $callback): $this
递归地遍历表达式的每一部分,并对表达式树的每一级执行回调,将当前迭代的表达式的实例作为第一个参数传递。
参数
-
Closure
$callback
返回值
$this