モデルクエリ一覧
関数 | 役割 | 返り値 |
---|---|---|
findUnique | 1件のレコードを取得する。見つからない場合はnullを返す | 型付きオブジェクト |
findUniqueOrThrow | 1件のレコードを取得する。見つからない場合は例外を投げる | 型付きオブジェクト |
findFirst | 1件のレコードを取得する。見つからない場合はnullを返す | 型付きオブジェクト |
findFirstOrThrow | 1件のレコードを取得する。見つからない場合は例外を投げる | 型付きオブジェクト |
findMany | 複数件のレコードを取得する。見つからない場合は空配列を返す | 型付きオブジェクトの配列 |
create | 1件のレコードを作成する | 型付きオブジェクト |
update | 1件のレコードを更新する | 型付きオブジェクト |
upsert | 1件のレコードを更新する。ない場合はレコードを追加する | 型付きオブジェクト |
delete | 1件のレコードを削除する | 型付きオブジェクト |
createMany | トランザクションで複数件のレコードを作成する | 作成されたレコードのカウント |
updateMany | トランザクションで複数件のレコードを更新する | 更新されたレコードのカウント |
deleteMany | トランザクションで複数件のレコードを削除する | 削除されたレコードのカウント |
count | レコードの件数を取得する | レコードの件数 |
aggregate | tableの数値フィールの集約、要約情報。欲しい情報を指定する。 | 集計値 |
groupBy | 指定条件を付けたtableの数値フィールの集約、要約情報。欲しい情報を指定する。 | 集計値 |
参考
モデルクエリオプション
モデルクエリのオプションには以下の種類があります。
- select
- include
- where
- orderBy
- distinct
select
selectはモデルの返り値のフィールドを指定することができます。
index.d.tsで型の上書きとセットで使います。
指定はbooleanで行います。
const result = await prisma.user.findUnique({
where: { id: 1 },
select: {
name: true,
profileViews: true,
},
})
// {
// name: "Alice",
// profileViews: 0
// }
include
includeはモデルの返り値に関係する別テーブルのレコードを含めるように指定することができます。
const users = await prisma.user.findMany({
include: {
posts: true, // Returns all fields for all posts
profile: true, // Returns all Profile fields
},
})
const user = await prisma.user.create({
data: {
email: 'alice@prisma.io',
posts: {
create: [
{ title: 'This is my first post' },
{ title: 'Here comes a second post' },
],
},
},
include: { posts: true }, // Returns all fields for all posts
})
where
whereは検索条件を指定することができます。
filter条件と演算子
クエリ | 役割 | 参考 |
---|---|---|
equals | 等しい |
name: {equals: 'Eleanor'} 、なくてもいい |
not | 等しくない | name: {not: 'Eleanor'} |
in | いずれか | name: {in: ['Alice', 'Bob']} |
notIn | いずれでもない | name: {notIn: ['Alice', 'Bob']} |
lt | より小さい | age: {lt: 18} |
lte | 以下 | age: {lte: 18} |
gt | より大きい | age: {gt: 18} |
gte | 以上 | age: {gte: 18} |
contains | 部分一致 | name: {contains: 'Eleanor'} |
search | 全文検索 |
name: {search: 'Eleanor'} stringに対して使用可。実験機能。 |
mode | 全文検索モード |
name: {search: 'Eleanor', mode: 'insensitive'} searchのオプション |
startsWith | 前方一致 | name: {startsWith: 'Eleanor'} |
endsWith | 後方一致 | name: {endsWith: 'Eleanor'} |
AND | 複数条件 |
AND: [{content: {contains: 'Prisma'}},{published: {equals: false}},] なくてもいい |
OR | 複数条件 |
OR: [{content: {contains: 'Prisma'}},{published: {equals: false}},] なくてもいい |
NOT | 複数条件 |
NOT: [{content: {contains: 'Prisma'}},{published: {equals: false}},] なくてもいい |
関係filter
クエリ | 役割 | 参考 |
---|---|---|
some | 1つ以上 |
some: {content: {contains: "Prisma"}} defaultの指定条件。なくていい |
every | 全て | every: {content: {contains: "Prisma"}} |
none | 一致しないすべて |
post: {none: {}} postがないすべてpost: {none: {published: true}} published: falseのpostをすべて |
is | 一致するすべて | is: {name: "Bob"}} |
isNot | 一致しないすべて | isNot: {name: "Bob"}} |
orderBy
orderByはソート条件を指定することができます。
const users = await prisma.user.findMany({
orderBy: {
name: 'asc',
email: 'desc',
},
})
distinct
distinctは重複を削除することができます。selectと併用して特定の組み合わせを抽出するのに使われます。
const users = await prisma.user.findMany({
select: {
name: true,
},
distinct: ['name'],
})
参照