Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie aus einer Viele-zu-Viele-Beziehungsfolge aus

Anscheinend haben Sie die viele-zu-viele-Assoziation zwischen Lebensmitteln und Zutaten nicht definiert. Zusammenfassend müssen Sie Ihren Modellen so etwas hinzufügen:

Lebensmittelmodell:

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

Zutatenmodell:

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

Wenn Sie dann abfragen möchten, schließen Sie nicht das "durch"-Modell, sondern das andere Modell in die Beziehung ein. In Ihrem Fall:

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

Sequelize übernimmt die Verknüpfung für Sie. Beachten Sie Folgendes, wenn Sie Ihrer Beziehung einen Alias ​​geben, z. B.:

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

Sie müssen diesen Alias ​​zu Ihrem Include hinzufügen:

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