【发布时间】:2020-11-15 22:16:30
【问题描述】:
在下面的 schema.prisma 中,模型链接和用户之间的关系是用postedBy User? @relation(fields: [postedById], reference: [id]) 创建的。如何在 MySQL 中实现这一点?
类型为 User 的字段 postedBy 应通过 User.id 字段链接到 User。由于 Link.postedBy 和 User.id 属于不同的数据类型,因此 Link.postedById 字段链接到 User.id。现在,postedBy 需要连接到 postedById。
我试图用 Link 中的两个 FOREIGN KEY 来解决这个问题。第一个链接postedBy 和postedById,第二个链接postedById 和User.id。这不起作用。
非常感谢任何帮助。
model Link {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
description String
url String
postedBy User? @relation(fields: [postedById], references: [id])
postedById Int?
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
password String
links Link[]
}
这些是我为获取架构结构而创建的 MySQL 查询:
CREATE TABLE User (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(128),
email VARCHAR(128) UNIQUE,
password VARCHAR(128),
links VARCHAR(256),
CONSTRAINT Link FOREIGN KEY (id) REFERENCES Link(id)
);
CREATE TABLE Link (
id INT AUTO_INCREMENT PRIMARY KEY,
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP(),
description VARCHAR(256),
url VARCHAR(256),
postedBy VARCHAR(128),
postedById INT,
CONSTRAINT author FOREIGN KEY (postedBy) REFERENCES Link(postedById),
FOREIGN KEY (postedById) REFERENCES UserId
);
【问题讨论】:
标签: mysql schema graphql-js prisma prisma-graphql