首頁  >  問答  >  主體

Prisma自動建立相關行,當父級被建立時

<p>我有一個類似這樣的模式</p> <pre class="brush:php;toolbar:false;">model User { id Int @default(autoincrement()) settings Settings } model Settings { userId Int settingOne Boolean @default(false) user User @relation(fields: [userId], references: [id], onDelete: Cascade) }</pre> <p>我不想讓使用者的設定是可選的 - 是否有一種方法可以在建立使用者時自動在設定表中建立對應的行? </p>
P粉211600174P粉211600174420 天前387

全部回覆(2)我來回復

  • P粉916760429

    P粉9167604292023-08-27 15:43:23

    我在我的程式碼中正在做非常類似的事情:

    const publication = await prisma.publication.create({
        data: {
            title: e.title,
            type: e.type,
            content: e.content,
            user: {
                connect: {
                    id: user.id
                }
            },
            publicationStatus: {
                create: {
                    status: 'DRAFT'
                }
            }
        }
    });
    

    我們所有的publications都有一個對應的publicationStatus,類似於你列出的問題,也許你可以這樣做:

    await prisma.user.create({
        data: {
            settings: {
                create: {
                    settingOne: true
                }
            }
        }
    })
    

    或類似的操作?

    回覆
    0
  • P粉710454910

    P粉7104549102023-08-27 12:46:38

    這是不可能的,因為如果關係的兩個方面都是必需的,那麼你要如何創建其中任何一個呢?所以沒有關係標量(表示資料庫中外鍵的欄位)的關係方面必須是可選的。你可以自己決定哪一個。

    例如,你想要建立User,但Settings是必要的,所以你需要先建立Settings。但是要建立Settings,你也需要User,因為它在Settings模型中是必要的。

    更多資訊請參閱文件

    #

    回覆
    0
  • 取消回覆