我是ORM的新手,我不知道使用ORM来做这件事。 考虑到我有5个表:
标记,拍卖,用户,user_tag和auction_tag
我正在使用SequelizeJS,我怎样才能得到这样的查询?
select A.id, A.title, A.content, A.createdAt, U.id, U.picture, U.name
from Auction A, User U, User U2
where A.userId = U.id and U2.id = x
and exists (select AT.id
from Auction_Tag AT
where AT.auction = A.id
and AT.tag in ( select T.id
from Tag T, User_Tag UT
where U2.id = UT.user
and UT.tag = T.id
)
);
有什么想法吗?谢谢你们
答案 0 :(得分:1)
使用orm假设从查询语言本身中抽象出来。 如果您愿意执行嵌套请求,则应使用必须传递给findAll方法的options对象的“where”属性。 我无法从你提供的信息中推断出你的结构,所以我在最好的猜测中给出了一个例子(拍卖你的拍卖模型和用户ID将id与用户联系起来):
Auction.findAll({where: { userid: 8 }}).done(callback);
但是,如果你想要一个相关的实体参数,那就说User.name,去吧:
Auction.findAll({where: { 'User.name': 'John' }}).done(callback);
如果您发现自己使用SQL查询,也许您应该考虑不使用ORM。