Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dodać warunki w podrzędnych modelach podrzędnych w sequelizie, które powinny mieć wpływ na mój model nadrzędny w findAndCountAll?

Okej, więc znalazłem rozwiązanie, ale dodałem surowe zapytanie z Joins, w którym dodałem moje wymagane warunki wszędzie tam, gdzie potrzebowałem i pobrałem identyfikatory głównego modelu. Następnie pobrałem dane za pomocą sequelize, dodając te identyfikatory w klauzuli where. Mój kod wygląda teraz tak.

const { limit, offset } = dbHelpers.GetPagination(
    req.query.limit,
    req.query.offset
);

let querySting = "(SELECT count(DISTINCT p.id) FROM ModelA p " +
    "JOIN ModelB cp ON cp.pId = p.id " +
    "JOIN ModelC cs ON cs.cpId = cp.id " +
    "JOIN ModelD ms ON ms.csId = cs.id " +
    "LEFT JOIN ModelE sa ON sa.msId = ms.id " +
    "LEFT JOIN ModelF pp ON pp.msId = ms.id " +
    "LEFT JOIN ModelG sta ON sta.ppId = pp.id " +
    "LEFT JOIN ModelH ol ON ol.cdId = cd.id " +
    "WHERE "   //you can add your conditions here
    + " ORDER BY p.id desc LIMIT  " + offset + ",  " + limit + ")"


const rawQuery = await models.sequelize.query(querySting,
    { type: QueryTypes.SELECT })
const Ids = rawQuery.map(result => result.id)

const results = await models.ModelA.findAndCountAll({
    where: {
        id: Ids
    },
    include: [
        {
            model: models.ModelB,
            as: "ModelB",
            include: [
                {
                    model: models.ModelC,
                    separate: true,
                },
                {
                    model: models.ModelD,
                    separate: true,
                    include: [
                        {
                            model: models.ModelE,
                            separate: true,
                                            {
                            model: models.ModelF,
                            separate: true,
                        },
                    ],
                },
            ],
        },
    ],
},
    {
        model: models.ModelG,
        include: [
            {
                model: models.ModelH,
                as: "ModelH",
            },
        ],
    },
                ],
            });



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL pomija pierwszy wiersz

  2. Operator „<” jest zarezerwowany Błąd programu PowerShell

  3. Wybierz dane między 2 datami a średnią godzinową wydajnością

  4. Jak zmienić mysql na mysqli?

  5. Tworzenie własnego TinyURL