我有兩個模型品牌和活動。續集belongsToMany通過查詢目標模型獲取源模型
一個品牌可以有很多廣告活動
export default(sequelize, DataTypes)=> {
const Brand = sequelize.define('Brand', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
})
Brand.associate = models=> {
Brand.belongsToMany(models.Campaign, {
through: models.CampaignBrand,
foreignKey: 'brand',
})
}
return Brand
}
一個運動也可以有很多品牌
export default(sequelize, DataTypes)=> {
const Campaign = sequelize.define('Campaign', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
})
Campaign.associate = models=> {
Campaign.belongsToMany(models.Brand, {
through: models.CampaignBrand,
foreignKey: 'campaign',
})
}
return Campaign
}
這裏是通過型號:
export default(sequelize, DataTypes)=> {
const CampaignBrand = sequelize.define('CampaignBrand', {
// see enums
status: {
type: DataTypes.INTEGER,
allowNull: false,
},
roleText: {
type: DataTypes.STRING,
},
})
CampaignBrand.associate = models=> {
CampaignBrand.belongsTo(models.Campaign, {
foreignKey: 'campaign',
targetKey: 'id',
onDelete: 'CASCADE',
})
}
return CampaignBrand
}
在情況下,我想通過品牌獲得廣告活動。我該怎麼辦? 我試圖查詢喜歡提到的文件,但它不爲我工作
有了屬於一對多的,你可以根據通過關係查詢,然後選擇特定的屬性。例如使用的findAll通過
User.findAll({ 包括:[{ 模型:項目,通過 :{ 屬性:[ 'createdAt', 'startedAt', 'finishedAt'], 其中:{完成:真} } }] });
我已經找到了一些解決的方法,但它不是我所期待的:
解決方案1:
更新belongsToMany品牌到的hasManyCampaignBrand以及查詢CampaignBrand.brand
解決方案2:
通過查詢品牌
任何其他建議獲得活動?
方言:的Postgres
數據庫版本: 9.4
Sequelize版本: 4.2。1