0

値 (省略形) の単純な配列があり、それらをループして、別の db テーブルの外部キーをチェックする必要があります。MySQL では IN 句を使用しますが、CFWheels と MS SQL ではどうすればよいかわかりません。

最初に users テーブルにクエリを実行し、ユーザーがメンバーになっているグループのリストを取得します。この情報 (私が行ったものではありません) は、users.groups 列にカンマ区切りのリストとして保存されます。次に、そのリストを繰り返し処理し、groups.title 列から各グループのタイトルを取得する必要があります。私はそれが以下のコードに似ているはずだと思っていますが、エラーになります。

また、「include」、つまり CFWheels の結合を使用して、これを 1 つのクエリとして実行するにはどうすればよいでしょうか?

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 に答える