I'm trying to understand how to do joins using a junction table for a many to many relationship. I set it up with sequelize, but for my own reasons I prefer knex. I am trying to convert a query to knex to better understand how to do these joins using junction tables.
Basically I have members
and events
with junction table members_events
. I want my results to look like:
[{
event_id,
title,
description
members: [
{
member_id,
etc
}...
]
}...]
I get this correct format using sequelize. The code generated by the working sequelize query is this.
SELECT "event".*, "members"."id"
AS "members.id", "members"."name"
AS "members.name", "members->members_events"."createdAt"
AS "members.members_events.createdAt", "members->members_events"."updatedAt"
AS "members.members_events.updatedAt", "members->members_events"."memberId"
AS "members.members_events.memberId", "members->members_events"."eventId"
AS "members.members_events.eventId"
FROM (SELECT "event"."id", "event"."title" FROM "events" AS "event" LIMIT 15)
AS "event"
LEFT OUTER JOIN ( "members_events" AS "members->members_events"
INNER JOIN "members" AS "members"
ON "members"."id" = "members->members_events"."memberId")
ON "event"."id" = "members->members_events"."eventId";
Can someone help me convert this to a knex query, not a knex.raw query if possible. Thanks.