gpt4 book ai didi

Prisma,根据表2中最新的外键从表1中选择行

转载 作者:行者123 更新时间:2023-12-05 03:30:49 25 4
gpt4 key购买 nike

为不好的标题道歉,努力想另一个。

目前,我有 2 个表,publicationpublicationStatus

出版物看起来像这样:

{
"id": "ckyil950d00027v2str5ljo7h",
"url_slug": "ckyil950e00037v2s4mqxvaho",
"type": "PEER_REVIEW",
"title": "Intersting review",
"content": "Content is optional at this stage",
"doi": "1093/ajae/aaq063",
"createdBy": "test-user-1",
"createdAt": "2022-01-17T11:12:50.845Z",
"updatedAt": "2022-01-17T11:12:50.847Z",
"publicationStatus": [
{
"status": "LIVE",
"createdAt": "2022-01-19T11:12:50.846Z",
"id": "ckyil950e00047v2sx4urbfte"
},
{
"status": "DRAFT",
"createdAt": "2022-01-17T11:12:50.846Z",
"id": "ckyil950e00047v2sx4urbfth"
}
],
"user": {
"id": "test-user-1",
"firstName": "Test",
"lastName": "User 1"
}
}

其中 publicationpublicationStatus 具有一对多关系。

我需要做的是一个find查询,如果latest publicationStatus,它只返回一个publication对于该 publicationstatusLIVE

有什么想法吗?

编辑:我能想到的最接近的是这个代码:

await prisma.publication.findFirst({
where: {
id,
publicationStatus: {
where: {
status: 'LIVE'
},
take: 1,
orderBy: {
createdAt: 'desc'
}
},
}
});

此代码有效,但演示了我正在努力实现的目标。

最佳答案

不幸的是,我认为目前无法直接使用 Prisma 查询来完成您希望的操作。不过,我可以建议两种可能的解决方法:

方法 1: 获取最新的 publicationStatus 以及 publication 并检查节点内的 status申请。

这是查询的样子:

    let publication = await prisma.publication.findFirst({
where: {
id
},
include: {
publicationStatus: {
orderBy: {
createdAt: 'desc'
},
take: 1
}
}
});

// check publication.publicationStatus[0].status and handle appropriately

方法 2:使用 queryRaw 编写原始 SQL 查询方法。

对于单个出版物,我认为使用方法 1 会更容易。但是,如果您想返回所有 LIVE 出版物(您在评论中提到了这一点),方法的性能特征1 可能是不受欢迎的。

关于Prisma,根据表2中最新的外键从表1中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70748250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com