Я использую параметр запроса :order
для передачи аргумента заказа в мою функцию. К сожалению, это не влияет на вывод.
Выходные данные отладки запроса показывают, что аргумент order
проанализирован правильно:
Parameter #2(cf_sql_varchar) = posts.createdAt ASC
Все же это все равно не имеет значения для вывода. Если я жестко закодирую аргумент (ORDER BY ..., #arguments.order#
), он отлично работает.
Есть идеи?
public any function getPost(required numeric postId, string order)
{
switch(arguments.order)
{
case "new":
arguments.order = "posts.createdAt DESC";
break;
case "old":
arguments.order = "posts.createdAt ASC";
break;
default:
arguments.order = "posts.score DESC";
}
local.post = new Query(dataSource=variables.wheels.class.connection.datasource);
local.post.setSql("
SELECT *
FROM
WHERE posts.id = :postId OR posts.parentId = :postId
ORDER BY posts.postTypeId ASC, :order"
);
local.post.addParam(name="postId", cfsqltype="cf_sql_integer", value=arguments.postId, maxlength=10);
local.post.addParam(name="order", cfsqltype="cf_sql_varchar", value=arguments.order, maxlength=20);
local.post = local.post.execute().getResult();
return local.post;
}