У меня есть база данных с тремя таблицами: users
, games
и game_user
.users
и games
имеют отношение "многие ко многим" с game_user
в качестве своей соединительной таблицы
Таблица game_user
имеет только три столбца (кроме id
): game_id
, user_id
и game_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
, очевидно, не с ролью пользователя.
Итак, мой вопрос: мой файл миграции правильный или есть лучший способ?Также, как я могу обновить таблицу соединений при создании игры?