sql >> Database >  >> RDS >> Mysql

Kies uit veel-op-veel vervolgrelaties

Het lijkt erop dat je de veel-op-veel-associatie tussen voedsel en ingrediënten niet hebt gedefinieerd. Samengevat moet u zoiets aan uw modellen toevoegen:

Voedselmodel:

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

Ingrediëntenmodel:

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

Als je dan een query wilt uitvoeren, neem je niet het "through"-model, maar het andere model op in de relatie. In jouw geval:

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

Sequelize doet de join voor je. Houd er rekening mee dat als u uw relatie een alias geeft, zoals:

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

Je moet die alias toevoegen aan je include:

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



  1. Selecteer rijen totdat een totaalbedrag is bereikt in een kolom (mysql)

  2. Gematerialiseerde weergave in mysql

  3. ongeldig naampatroon bij poging om aangepaste objecttoewijzing van het orakeltype door te geven

  4. Zoeken met jokertekens in MySQL full-text zoeken