0

我有一个简单的值数组(缩写),我需要遍历它们并检查另一个数据库表中的外键。在 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#)"
);
4

1 回答 1

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 查询中,您需要用单引号将字符串括起来,或者如果您传入数字或布尔值,则将引号留在外面。

于 2012-11-30T14:22:56.603 回答