使用 Prisma ORM 创建新记录后,如何获取新创建记录的 ID 以使用该 ID 执行其他操作?
例如,在 Laravel Eloquent 中,我可以使用
insertGetId
创建一个产品
$product_id = Product::insertGetId([
'cat_id' => $request->cat_id,
'name' => $request->name,
'price' => $request->price,
'created_at' => Carbon::now()
]);
然后使用该 ID 执行其他相关任务,例如将产品图像保存在另一个表中(使用
$product_id
):
ProductMultiImage::insert([
'product_id' => $product_id,
'photo_name' => $upload_path,
'created_at' => Carbon::now(),
]);
那么当使用 Prisma 的 createMany 方法创建一些记录时,如何获取新记录 id?
export async function action({ request }) {
const inputData = await request.formData();
const parsedData = JSON.parse(inputData.get("data"));
const formattedData = parsedData.map(data => ({
discountTypeId: 1,
discountValue: 121,
productId: data.productId,
}));
await db.discountedProducts.create({
data: [...formattedData],
});
// Want to do something else using the newly created discountedProducts id
return redirect("/app");
}
如何在 Prisma ORM 中实现类似的功能?
在 Prisma 中,当您使用
create
方法创建记录时,它会返回新创建的数据及其所有字段作为对象。因此,创建后您可以从那里访问新创建的记录id
。
这是一个例子:
const bundle = await db.bundles.create({
data: {
bundleTypeId: bundleType,
discountTypeId: discountType,
discountValue: discountVal,
},
});
const bundleId = bundle.id;