2

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.

Eric Shell
  • 913
  • 2
  • 8
  • 19
  • I decided to use bookshelf.js instead, which I was able to easily do this and am happy with compared to sequelize. – Eric Shell Dec 14 '17 at 00:23

1 Answers1

2

I decided to use bookshelfjs instead of sequelize. Seems much more along the lines of what I was looking for in an orm.

Eric Shell
  • 913
  • 2
  • 8
  • 19