额外区块类型 (EBT) - 全新的布局构建器体验❗
滚动
01/10/2025, by Ivan
Menu
Select 查询构建器支持在字段列表中使用表达式。表达式示例包括「年龄字段的两倍」、「所有 name 字段的数量」以及标题字段的子字符串。请记住,许多表达式可能会使用 SQL 函数,而并非所有 SQL 函数都在所有数据库中标准化。模块开发者必须确保只使用与数据库兼容的表达式。(参见 函数和运算符列表)
要向查询中添加表达式,请使用 addExpression() 方法。
$count_alias = $query->addExpression('COUNT(uid)', 'uid_count');
$count_alias = $query->addExpression('created - :offset', 'timestamp', array(':offset' => 3600));
上面第一行会向查询中添加「COUNT(uid) AS uid_count」。第二个参数是该字段的别名。在极少数情况下,如果别名已经被使用,会生成一个新的别名,并且 addExpression() 的返回值就是可用的别名。如果没有指定别名,则会生成一个默认值「expression」(或 expression_2、expression_3 等)。
可选的第三个参数是一个关联数组,用于提供占位符的值,这些值会作为表达式的一部分被使用。
请注意,某些 SQL 表达式如果没有伴随 $query->groupBy() 添加的 GROUP BY 子句,可能无法正常工作。开发者必须确保生成的查询是有效的。