2016-07-28 10 views
1

SequelizeでJOINを使用する方法のプロンプトが表示されますか? 私は次のコードを持っている:4の観点でSequelizeでJOINを使用する

 db.User.findAll({ 
     attributes: ['id'], 
     where: {vipEnd: {lt: expiresVip}, vip: true}, 
     limit: 100, 
     order: 'id' 
    }).then(function(users) { 

を、それは次のようになります。

SELECT "vkId" AS "id" 
FROM "user" AS "user" 
WHERE "user"."vipEnd" < 1469699683 --expiresVip 
AND "user"."vip" = true 
ORDER BY id 
LIMIT '100'; 

、このような結果を達成するためにどのように?

SELECT "vkId" AS "id" 
FROM "user" AS "user" 

LEFT JOIN "notification" ON "notification"."userId" = "user"."vkId" 

WHERE "user"."vipEnd" < 1469699683 
AND "user"."vip" = true 

AND "notification"."type" = 4 
AND "notification"."expiresVipDate" < 1469699683 

ORDER BY id 
LIMIT '100'; 

ありがとうございます!

答えて

1

モデルの関連付けを定義する必要があります。 例: db.User.hasMany(db.Notification, {foreignKey: 'UserId'}); 使用特性はsequelizeに含める:

db.User.findAll({ 
include: [{ 
    model: db.Notification, 
    required: true//true INNER JOIN, false LEFT OUTER JOIN - default LEFT OUTER JOIN 
}]}).then(function(user) {}, function(err) { 
res.json(err, 400);}); 

あなたがよりここ http://docs.sequelizejs.com/en/latest/docs/associations/

に相談してください
関連する問題