我正在将脚本转移到Drupal 7并在查询中有一个变量字段名称。从一些研究来看,执行查询的唯一方法是通过结构化查询。这基本上就是我想要的:
db_query("SELECT '$variable_field_name1', '$variable_field_name2',
POW((lat - :lat), 2) + POW((:lng - lng), 2) AS distance
FROM table ORDER BY distance
LIMIT 1", array(':lat' => $lat, ':lng' => $lng));
这是我遇到的问题(无法在AS语句中找到文档):
$query = db_select('table', 't');
$query->fields('t', array("$variable_field_name1", "POW((lat - $lat), 2)
+ POW(($lng - lng), 2) AS distance"));
$query->orderBy('distance', 'ASC');
$query->range(0, 1);
$result = $query->execute();
答案 0 :(得分:0)
只需使用addExpression()来设置那种查询。
$query = db_select('table', 't');
$query->fields('t', array($variable_field_name1, $variable_field_name2));
$query->addExpression(
'POW((lat - :lat), 2) + POW((:lng - lng), 2)',
'distance',
array(':lat' => $lat, ':lng' => $lng)
);
$query->orderBy('distance', 'ASC');
$query->range(0, 1);
$result = $query->execute();
可以在https://drupal.org/node/1848358找到有关addExpression()的文档。