はじめに
- prisma.jsを触って覚えたことをまとめてみました。 www.prisma.io
Viewテーブルをprisma.jsから利用する方法
- 下記のようなviewテーブルを作成した場合
create view productlist as select id, name from product;
npx prisma introspect
コマンドを実行しても定義が出力されないのでprisma/schema.prisma
ファイルに手動でviewテーブルの定義を追加する
model productlist { id Int @unique name String @db.VarChar(255) @@map("productlist") }
※Viewテーブルの場合、特にユニーク制約などはつくなくて良いのですが、指定しないでnpx prisma generate
を実行するとエラーになるため、idフィールドに@unique
を指定するようにしている。
error: Error validating model "productlist": Each model must have at least one unique criteria that has only required fields. Either mark a single field with `@id`, `@unique` or add a multi field criterion with `@@id([])` or `@@unique([])` to the model.
- 下記のコマンドを実行するとviewテーブルのモデルを利用する事ができる。
npx prisma generate
検索フォームの条件によってwhereの条件を変えたい
- 下記のように検索フォームの条件が何もなかった場合、undefinedを指定すると検索条件とみなされずに
select * from productlist
で実行される
const conversions = await prisma.productlist.findMany({ where: { name: { contains: searchName ? searchName : undefined, }, }} )
実行されるモデルのSQLを確認する方法
- PrismaClientに
log: ['query']
を指定するとconsole.logにSQLが表示される
const prisma = new PrismaClient({log: ['query']})