2016-08-09 63 views
4

表格具有多對多的關係,由一個訂單表格交匯。如何查詢多對多的關係sequelize?

出口 - >在線訂單< - 產品

我想出路今天訂購的名單。

因此,這裏是讓所有網點的功能:

db.Outlet.findAll({include: [ 
    {model:db.Product, attributes: ['id', 'name', 'nameKh']} 
    ]}).then(function(outlets){ 
    return res.jsonp(outlets); 
}) 

我得到了這樣的結果:

enter image description here

我只能與在產品編號使用此選擇

db.Outlet.findAll({include: [ 
    {model:db.Product, attributes: ['id', 'name', 'nameKh'], where: {id: 2} 
    ]}).then(function(outlets){ 
    return res.jsonp(outlets); 
}) 

如何查詢特定訂單金額,或今天訂單dat è?

這裏是我的模型:

出口:

var Outlet = sequelize.define('Outlet', { 
      outletCode: DataTypes.STRING, 
      outletName: DataTypes.STRING, 
      outletNameKh: DataTypes.STRING, 
      outletSubtype: DataTypes.STRING, 
      perfectStoreType: DataTypes.STRING, 
      address: DataTypes.STRING 
     }, 
     { 
      associate: function(models){ 
       Outlet.belongsToMany(models.Product, {through: models.Order}); 
       Outlet.belongsTo(models.Distributor); 
       // Outlet.hasMany(models.Order); 
      } 
     } 
    ); 

產品:

var Product = sequelize.define('Product', { 
      inventoryCode: DataTypes.STRING, 
      name: DataTypes.STRING, 
      nameKh: DataTypes.STRING, 
      monthlyCaseTarget: DataTypes.INTEGER, 
      pieces: DataTypes.INTEGER, 
      star: DataTypes.BOOLEAN, 
      price: DataTypes.FLOAT, 
      active: DataTypes.BOOLEAN 
     }, 
     { 
      associate: function(models){ 
       Product.belongsToMany(models.Outlet, {through: models.Order}); 
       Product.belongsTo(models.Category); 
       // Product.hasMany(models.Order); 
      } 
     } 
    ); 

訂單:

var Order = sequelize.define('Order', { 
      id: { 
       type: DataTypes.INTEGER, 
       primaryKey: true, 
       autoIncrement: true 
      }, 
      amount: DataTypes.INTEGER 
     }, 
     { 
      associate: function(models){ 
       Order.belongsTo(models.Outlet); 
       Order.belongsTo(models.Product); 
       Order.belongsTo(models.User); 
      } 
     } 
    ); 
+1

感謝這個清晰的問題與例子,我甚至從中學到了! – antew

回答

0

試試:

db.Outlet.findAll({ 
    include: [{ 
     model:db.Product, 
     attributes: ['id', 'name', 'nameKh'], 
     through: { where: { amount: 10 } } 
    }] 
}) 
+0

可能放在哪裏? – Ron

+1

是,@Ron。你應該包裝它的聲明像'..findAll({include:[...],其中:{'$ product.amout $':10}})' –

+0

解決了謝謝 – Ron