我有一个包含三个表的数据库: users
, games
以及 game_user
. users
以及 games
与…有多对多的关系 game_user
作为它的连接表
table game_user
只有三列(除 id
): game_id
, user_id
以及 game_admin
.
我们的想法是 user
可以是 game
,或 admin
. 我会存储这些值 0
对于前者和 1
例如,对于后者。
我不知道如何在阿多尼斯做到这一点。我已经阅读了文档,也许我应该创建一个 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
,显然,不是用户的角色。
所以我的问题是:我的迁移文件是正确的还是有更好的方法?另外,在创建游戏时如何更新连接表?
1条答案
按热度按时间7gs2gvoe1#
要更新关联表的额外属性,您应该使用pivot模型,这里可以将其用作attach方法的回调