[BUG]: Two fails with `There is not enough information to infer relation`

https://github.com/drizzle-team/drizzle-orm/issues/4140 Below is a minimum reproduction. 1/ one-to-many doesn't work when the one() relation uses multiple fields. Below, a unit_packs references three units. The many relationship units.in_packs fails. 2/ one-to-many doesn't work when there are multiple one() relations. Below, unit_links has a unit_left and unit_right relationship. However, both rels fail.
import { relations } from 'drizzle-orm';
import { int, sqliteTable } from 'drizzle-orm/sqlite-core';

export const units = sqliteTable('units', {
id: int().primaryKey(),
});
export const unitsRel = relations(units, ({ many }) => ({
// fails when referencing `one()` with multiple fields
in_packs: many(packs, { relationName: 'all_units' }),

// fails when referencing table with multiple reference fields
link_lefts: many(links, { relationName: 'unit_left' }),
link_rights: many(links, { relationName: 'unit_right' }),
}));

export const packs = sqliteTable('unit_packs', {
id: int().primaryKey(),
unit_1_id: int().notNull().references(() => units.id),
unit_2_id: int().notNull().references(() => units.id),
unit_3_id: int().notNull().references(() => units.id),
});
export const packsRel = relations(packs, ({ one, many }) => ({
all_units: one(units, {
relationName: 'in_packs',
fields: [packs.unit_1_id, packs.unit_2_id, packs.unit_3_id],
references: [units.id, units.id, units.id],
}),
}));

export const links = sqliteTable('unit_links', {
id: int().primaryKey(),
unit_left_id: int().notNull().references(() => units.id),
unit_right_id: int().notNull().references(() => units.id),
});
export const linksRel = relations(links, ({ one }) => ({
unit_left: one(units, {
relationName: 'link_lefts',
fields: [links.unit_right_id],
references: [units.id],
}),
unit_right: one(units, {
relationName: 'link_rights',
fields: [links.unit_left_id],
references: [units.id],
}),
}));
import { relations } from 'drizzle-orm';
import { int, sqliteTable } from 'drizzle-orm/sqlite-core';

export const units = sqliteTable('units', {
id: int().primaryKey(),
});
export const unitsRel = relations(units, ({ many }) => ({
// fails when referencing `one()` with multiple fields
in_packs: many(packs, { relationName: 'all_units' }),

// fails when referencing table with multiple reference fields
link_lefts: many(links, { relationName: 'unit_left' }),
link_rights: many(links, { relationName: 'unit_right' }),
}));

export const packs = sqliteTable('unit_packs', {
id: int().primaryKey(),
unit_1_id: int().notNull().references(() => units.id),
unit_2_id: int().notNull().references(() => units.id),
unit_3_id: int().notNull().references(() => units.id),
});
export const packsRel = relations(packs, ({ one, many }) => ({
all_units: one(units, {
relationName: 'in_packs',
fields: [packs.unit_1_id, packs.unit_2_id, packs.unit_3_id],
references: [units.id, units.id, units.id],
}),
}));

export const links = sqliteTable('unit_links', {
id: int().primaryKey(),
unit_left_id: int().notNull().references(() => units.id),
unit_right_id: int().notNull().references(() => units.id),
});
export const linksRel = relations(links, ({ one }) => ({
unit_left: one(units, {
relationName: 'link_lefts',
fields: [links.unit_right_id],
references: [units.id],
}),
unit_right: one(units, {
relationName: 'link_rights',
fields: [links.unit_left_id],
references: [units.id],
}),
}));
GitHub
[BUG]: Two fails with `There is not enough information to infer rel...
Report hasn't been filed before. I have verified that the bug I'm about to report hasn't been filed before. What version of drizzle-orm are you using? 0.39.3 What version of drizzle-kit...
0 Replies
No replies yetBe the first to reply to this messageJoin

Did you find this page helpful?