Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez parmi plusieurs séquelles de relations

Il ne semble pas que vous ayez défini l'association plusieurs à plusieurs entre les aliments et les ingrédients. En résumé, vous devez ajouter quelque chose comme ceci à vos modèles :

Modèle alimentaire :

Food.belongsToMany(Ingredients, { through: Food_ingredients});

Modèle d'ingrédients :

Ingredients.belongsToMany(Food, { through: Food_ingredients});

Ensuite, lorsque vous souhaitez interroger, vous n'incluez pas le modèle "via", mais l'autre modèle dans la relation. Dans votre cas :

Food.findAll({include: [
{
  model: Ingredients
}]}).then(responseWithResult(res)).catch(handleError(res));

Sequelize fera la jointure pour vous. Notez que si vous donnez un alias à votre relation, comme :

Food.belongsToMany(Ingredients, {as 'someAlias', through: Food_ingredients});

Vous devez ajouter cet alias dans votre include :

Food.findAll({include: [
{
  model: Ingredients, as 'someAlias'
}]}).then(responseWithResult(res)).catch(handleError(res));