Sequelize.js 如何使用sequelize实现对include的查询?
每个订单都有几笔付款。它只需要在最后一次付款时工作。 我需要找到一个订单,该订单在“2021-04-08”之后付款,其编号大于1710 通过使用查询解决了这个问题Sequelize.js 如何使用sequelize实现对include的查询?,sequelize.js,Sequelize.js,每个订单都有几笔付款。它只需要在最后一次付款时工作。 我需要找到一个订单,该订单在“2021-04-08”之后付款,其编号大于1710 通过使用查询解决了这个问题 SELECT "OrderModel"."id", "OrderModel"."number", "payment"."id" AS "_0&
SELECT "OrderModel"."id",
"OrderModel"."number",
"payment"."id" AS "_0",
"payment"."total_cost" AS "_1",
"payment"."payment_type_id" AS "_2",
"payment"."payment_date" AS "_3",
"payment"."number" AS "_4",
FROM "orders" AS "OrderModel"
LEFT OUTER JOIN (
payments AS preparedPayment
INNER JOIN (
SELECT order_id AS oi, max(created_at) AS MaxDate FROM payments
GROUP BY order_id
) AS filteredPayment ON preparedPayment.order_id = filteredPayment.oi AND preparedPayment.created_at = MaxDate
) AS "payment" ON "OrderModel"."payment_id" = "payment"."id" AND ("payment"."deleted_at" IS NULL)
WHERE "OrderModel"."number" > 1710 AND "payment"."payment_date" > '2021-04-08';
但是通过sequelize实现会导致错误Include unexpected。元素必须是模型、关联或对象。
const order = await OrderModel.findAndCountAll({
offset,
limit,
where: {
[Op.and]: [{
$payment.paymentDate$: {[Op.gte]: '2021-04-08'},
}, {
number: {[Op.gte]: 1710},
}]
},
attributes: ['id', 'number']
include: [
{...},
{...},
[
Sequelize.literal(`(
SELECT "OrderModel"."id",
"OrderModel"."number",
"payment"."payment_date" AS "paymentDate"
FROM "orders" AS "OrderModel"
LEFT OUTER JOIN (
payments AS preparedPayment
INNER JOIN (
SELECT order_id AS oi, max(created_at) AS MaxDate FROM payments
GROUP BY order_id
) AS filteredPayment ON preparedPayment.order_id = filteredPayment.oi AND preparedPayment.created_at = MaxDate
) AS "payment" ON "OrderModel"."payment_id" = "payment"."id" AND ("payment"."deleted_at" IS NULL)
)`),
'payment',
],
]
});
如何实施