Javascript 如何使用用户';阿多尼斯的角色

Javascript 如何使用用户';阿多尼斯的角色,javascript,mysql,many-to-many,junction-table,adonis.js,Javascript,Mysql,Many To Many,Junction Table,Adonis.js,我有一个包含三个表的数据库:users、games和games\u userusers和games与game\u user有多对多的关系作为其连接表 表game\u user只有三列(除了id):game\u id、user\u id和game\u admin 其思想是,用户可以是游戏中的普通用户,也可以是管理员。例如,我会为前者存储值0,为后者存储值1 我不知道如何在阿多尼斯做到这一点。我已经阅读了文档,也许我应该创建一个数据透视模型,但我不知道该怎么做(或者我是否应该这样做) 我尝试了以下方

我有一个包含三个表的数据库:
users
games
games\u user
users
games
game\u user
有多对多的关系作为其连接表

game\u user
只有三列(除了
id
):
game\u id
user\u id
game\u admin

其思想是,
用户
可以是
游戏
中的普通用户,也可以是
管理员
。例如,我会为前者存储值
0
,为后者存储值
1

我不知道如何在阿多尼斯做到这一点。我已经阅读了文档,也许我应该创建一个
数据透视模型
,但我不知道该怎么做(或者我是否应该这样做)

我尝试了以下方法:

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])
但这只会使用
用户id
更新连接表,显然,不使用用户角色


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

要更新关联表的额外属性,您应该使用透视模型 这里有一些东西可以用作附加方法的回调

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

透视表标记用于将行转换为列,而不是连接表的别名。一些orm将连接表称为pivot表,这让许多开发人员感到困惑。请在使用前阅读标签说明。好的,很抱歉,但是我认为标签可以更新,或者创建一个新的标签,因为“一些ORM将连接表称为透视表”。只有我的两分钱,但这并没有改变问题(除了一些单词选择。不过感谢您的更正。或者您可以要求您选择的ORM后面的人停止将连接表引用为透视表…透视表标记定义很好,添加此引用会混淆用户。提示后,您成功地为您的问题找到了正确的标记。pi还有一件事vot模型必须更改模式,在这种情况下,表名将成为game_用户