gpt4 book ai didi

javascript - 如何使用 Adonis 中的用户 Angular 色更新联结表

转载 作者:行者123 更新时间:2023-11-29 03:18:14 24 4
gpt4 key购买 nike

我有一个包含三个表的数据库:usersgamesgame_userusersgamesgame_user 为联结表

game_user 表只有三列(id 除外):game_iduser_idgame_admin.

user 可以是game 中的普通用户,也可以是admin。例如,我会为前者存储值 0,为后者存储值 1

我不确定如何在 Adonis 中执行此操作。我已阅读文档,也许我应该创建一个 pivotModel,但我不确定该怎么做(或者我是否应该为此做)。

我尝试了以下方法:

class GameUserSchema extends Schema {
up () {
this.create('game_user', (table) => {
table.increments()
table.integer('user_id').unsigned().index('user_id')
table.integer('game_id').unsigned().index('game_id')
table.integer('game_admin').unsigned().index('game_admin')
table.foreign('user_id').references('users.id')
.onDelete('cascade')
table.foreign('game_id').references('games.id')
.onDelete('cascade')
})
}

down () {
this.drop('game_user')
}
}

现在,当我添加游戏时,我通常会使用以下代码:

const newGame = await Game.create(gameData)
await user.games().attach([newGame.id])

但这只会更新带有 user_id 的联结表,显然,不会带有用户的 Angular 色。

所以我的问题是:我的迁移文件是正确的还是有更好的方法?另外,如何在创建游戏时更新联结表?

最佳答案

要更新关联表的额外属性,您应该使用数据透视模型这是您可以用作附加方法的回调

await user.games().attach(games, (row) => {
row.game_admin = 1
})

关于javascript - 如何使用 Adonis 中的用户 Angular 色更新联结表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50650480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com