作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
选择查询构建器支持在字段列表中使用表达式。表达式的例子包括“年龄字段的两倍”,“所有名字字段的总计”,或者是标题字符串的一个子集字符串。注意,很多表达式使用SQL函数,并不是所有的函数都可以跨数据库。因此模块开发者,需要自己确保只使用跨数据库的表达式。相关信息可参考:http://drupal.org/node/773090。
为了向一个查询添加表达式,可以使用addExpression()方法。
<?php
$count_alias = $query->addExpression('COUNT(uid)', 'uid_count');
$count_alias = $query->addExpression('created - :offset', 'uid_count', array(':offset' => 3600));
?>
上面的第一行,将会向查询中添加"COUNT(uid) AS uid_count"。第二个参数是字段的别名。在个别情况下,别名已被使用,此时将会生成一个新的别名,而addExpression()的返回值将会是正被使用的别名。如果没有指定别名,将会生成一个默认的"expression" (或者 expression_2、 expression_3、 等等。)
第三个参数,是一个可选的关联数组,里面包含了供表达式使用的占位符的值。
注意,有些表达式,只在Group By语句存在的情况下才起作用。对于查询本身的有效性,需要程序员自己来确保。