Wie kann ich diese Prisma-Abfragen auf eine einzige Abfrage reduzieren?
P粉423694341
2023-09-03 08:34:00
<p>Ich muss den letzten <code> des Benutzers </code> nach Datum abrufen, ohne vorher die <code>id</code> zu kennen </code>, ich kann es mit zwei Abfragen wie dieser machen: </p>
<pre class="brush:php;toolbar:false;">ctx.prisma.post.update({
Wo: {
ID: Warten auf ctx.prisma.post
.findFirst({
wobei: { Benutzer-ID: "c2e4c855-768c-48ab-b9c1-155ce1090cd6 },
orderBy: { Datum: "desc"
})
.then(post => post.id),
},
Daten: {
aktualisiert: wahr
},
})</pre>
<p>Ich habe versucht, es als Abfrage zum Laufen zu bringen, hatte aber keinen Erfolg. Dies ist die beste SQL-Klausel, die ich je bekommen habe: </p>
<pre class="lang-sql Prettyprint-override"><code>UPDATE-Beitrag
SET aktualisiert = wahr
WO id IN (
WÄHLEN AUS (
SELECT-ID
VON Beitrag
WHERE user_id = "c2e4c855-768c-48ab-b9c1-155ce1090cd6"
AND date = (SELECT MAX(date) from Post)) as x);
</code></pre>
<p>Obwohl es sich hierbei um eine Klausel handelt, greift sie auch zweimal auf die Datenbank zu. Wenn es eine bessere Möglichkeit gibt, dies in SQL zu tun, wäre ich daran interessiert, es zu lernen, aber ich möchte Prisma nicht verwenden, um <code>raw</code>-Abfragen zu senden und jegliche Typsicherheit zu verlieren. </p>
<p>Ist das, was ich suche, möglich oder sollte ich es in zwei Abfragen behalten? </p>
如果您只想更新给定
user_id
的最新Post
:我不知道你会如何用 prisma 编写这个,但这是 SQL 查询。