2016-08-09 4 views
4

Таблицы имеют много-много отношений, соединение по таблице заказов между ними.Как запросить многие отношения во многих отношениях?

Outlet -> Заказ < - Продукт

Я хочу, чтобы получить список розетки на сегодня орден.

Так вот функция, чтобы получить все выходы:

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

Я получил этот результат:

enter image description here

я могу выбрать только где Product Id с помощью этого:

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

Смежные вопросы