Drizzle-ORM多对一关联报错:需指定关联名称
解决Drizzle-ORM多表关联报错问题
当一个表与另一张表存在多个关联关系时,Drizzle无法自动区分这些关联,必须手动为每个关联指定唯一的relationName来解决报错。
修改后的完整代码:
export const games = pgTable('games', { id: serial('id').primaryKey(), player1Id: integer('player1_id'), player1Scores: json('player1_scores'), player2Id: integer('player2_id'), player2Scores: json('player2_scores'), winnerId: integer('winner_id'), }); export const players = pgTable('players', { id: serial('id').primaryKey(), email: varchar('email'), name: varchar('name', { length: 256 }), }); export const playersRelations = relations(players, ({ many }) => ({ gamesAsPlayer1: many(games, { relationName: 'game_player1' }), gamesAsPlayer2: many(games, { relationName: 'game_player2' }), gamesAsWinner: many(games, { relationName: 'game_winner' }), })); export const gamesRelations = relations(games, ({ one }) => ({ player1: one(players, { fields: [games.player1Id], references: [players.id], relationName: 'game_player1' }), player2: one(players, { fields: [games.player2Id], references: [players.id], relationName: 'game_player2' }), winner: one(players, { fields: [games.winnerId], references: [players.id], relationName: 'game_winner' }), }));
关键说明:
- 每个从
games到players的one关联都添加了唯一的relationName,让Drizzle能区分不同关联 players的many关联对应每个relationName定义反向关联名称,后续查询时可明确区分玩家作为不同角色参与的游戏
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

