sql >> Database teknologi >  >> RDS >> Mysql

Hvordan tilføjer jeg betingelser i underordnede underordnede modeller i efterfølger, som bør påvirke min overordnede model i findAndCountAll?

Okay, så jeg regnede med løsningen, men tilføjede en rå forespørgsel med Joins, hvor jeg tilføjede mine nødvendige betingelser, hvor end jeg havde brug for, og hentede id'er for hovedmodellen. Så hentede jeg dataene ved at bruge sequelize og tilføjede disse id'er i where-klausulen. Min kode ser sådan ud nu.

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. java.lang.ClassCastException:oracle.sql.TIMESTAMP kan ikke castes til java.sql.Timestamp

  2. Hvordan får man data fra databasen til at se side i laravel?

  3. MySQL Quick Tip:Brug af LENGTH og TRIM funktionen

  4. Hekaton med et twist:In-memory TVPs – Del 3