You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:21:16