在Adonis.js中,根据具体的业务需求和数据模型设计,可以选择用户(User)hasOne角色(Role)或者角色hasMany用户的关系。
用户hasOne角色:
class User extends Model {
role() {
return this.hasOne('App/Models/Role')
}
}
module.exports = User
class Role extends Model {
user() {
return this.belongsTo('App/Models/User')
}
}
module.exports = Role
class CreateRolesTable {
// ...
up() {
this.create('roles', (table) => {
table.increments()
table.string('name').notNullable()
table.integer('user_id').unsigned().references('id').inTable('users')
table.timestamps()
})
}
// ...
}
const user = await User.find(1)
const role = await user.role().fetch()
console.log(role)
角色hasMany用户:
class Role extends Model {
users() {
return this.hasMany('App/Models/User')
}
}
module.exports = Role
class User extends Model {
role() {
return this.belongsTo('App/Models/Role')
}
}
module.exports = User
class CreateUsersTable {
// ...
up() {
this.create('users', (table) => {
table.increments()
table.string('name').notNullable()
table.integer('role_id').unsigned()
table.timestamps()
})
}
// ...
}
const role = await Role.find(1)
const users = await role.users().fetch()
console.log(users)
根据具体业务需求,选择hasOne或hasMany关系来定义用户和角色之间的关系。