使用In进行CFWheels查询

时间:2012-11-29 15:24:44

标签: coldfusion cfwheels

我有一个简单的值数组(缩写),我需要循环它们并检查另一个db表中的外键。在MySQL中,我使用IN子句,但使用CFWheels和MS SQL,我不知道如何去做。

我首先查询users表并获取用户所属的组列表。此信息(不是我的操作)存储在users.groups列中以逗号分隔的列表中。然后,我需要迭代该列表,并从groups.title列中获取每个组的标题。我认为它应该类似于下面的代码,但它错误,任何想法?

另外,如何使用“include”即CFWheels中的连接作为一个查询来完成?

user = model("user").findAll(
    select="groups",
    where="userid = '#params.userid#'"
);

// remove trailing comma from list
groups = left(user.groups,len(user.groups)-1);

groups = listToArray(groups);

group_titles = model("groups").findAll(
    select="title",
    where="abbr IN (#groups#)"
);

1 个答案:

答案 0 :(得分:1)

您需要将列表中的每个值用单引号括起来,而不是将列表转换为数组。

user = model("user").findAll(
  select="groups",
  where="userid='#params.userid#'"
);

group_titles = model("groups").findAll(
  select="title",
  where="abbr IN (#ListQualify(groups, "'")#)"
);

在CFWheels ORM查询中,您需要用单引号括起字符串,或者在传入数字或布尔值时保留引号。