Comment puis-je réduire ces requêtes Prisma à une seule requête ?
P粉423694341
2023-09-03 08:34:00
<p>J'ai besoin d'obtenir le dernier <code> de l'utilisateur</code> par date <code>udpate</code><code> </code>, je peux le faire avec deux requêtes comme celle-ci : </p>
<pre class="brush:php;toolbar:false;">ctx.prisma.post.update({
où: {
identifiant : attendre ctx.prisma.post
.findFirst({
où : { userId : "c2e4c855-768c-48ab-b9c1-155ce1090cd6" },
orderBy : { date : "desc" },
})
.then(post => post.id),
},
données: {
mis à jour : vrai
},
})</pré>
<p>J'ai essayé de le faire fonctionner comme une requête mais je n'ai pas réussi, c'est la meilleure que j'ai obtenue en tant que clause SQL : </p>
<pre class="lang-sql Prettyprint-override"><code>UPDATE
SET mis à jour = vrai
OÙ identifiant DANS (
SÉLECTIONNER * DEPUIS (
ID SELECT
DE Poste
OÙ user_id = "c2e4c855-768c-48ab-b9c1-155ce1090cd6"
ET date = (SELECT MAX(date) from Post)) as x);
</code></pre>
<p>Bien qu'il s'agisse d'une clause, elle accède également deux fois à la base de données. S'il existe une meilleure façon de le faire en SQL, je serais intéressé à l'apprendre, mais je ne veux pas utiliser Prisma pour envoyer des requêtes <code>raw</code> </p>
<p>Ce que je recherche est-il possible ou dois-je le conserver en deux requêtes ? </p>
Si vous souhaitez uniquement mettre à jour un
user_id
的最新Post
donné :Je ne sais pas comment vous écririez cela en prisma, mais il s'agit d'une requête SQL.