美文网首页sequelize
Sequelize 的表关联

Sequelize 的表关联

作者: RoyChina | 来源:发表于2019-04-22 23:09 被阅读0次

文章转载自:https://www.jianshu.com/p/8242b841de9d

一对一 hasOne & belongsTo

区别: 联系键 添加的地方不一样

var Player = this.sequelize.define('player', {/* attributes */}), 
    Coach  = this.sequelize.define('coach', {/* attributes */}), 
    Team  = this.sequelize.define('team', {/* attributes */}),
    Game =  this.sequelize.define('game', {/* attributes */});


Player.belongsTo(Team);     // 添加 teamId 到 Player
Coach.hasOne(Team);         //添加 coachId 到 Team

通过 hasOne 方法添加的模型
对新添加模型的 setter 和 getter 会自动以模型名为后缀
此外,也会以 模型名+id 的形式生成外码
可以通过以下代码修改

// Person#getPerson, Person#setPerson

Person.hasOne(Person);


// 增加方法Person#getFather,Person#setFather
// 修改外码为dadId

Person.hasOne(Person, {as: 'Father', foreignKey: 'dad_id'})

一对多

var User = sequelize.define('user', {/* ... */})
var Project = sequelize.define('project', {/* ... */})
 
// Project#getWorkers , Project#setWorkers

Project.hasMany(User, {as: 'Workers'})

多对多

使用belongToMany,为两个多对多的模型建立联系
通过创建一个中间模型(联系集)实现

User = sequelize.define('user', {})
Project = sequelize.define('project', {})
UserProjects = sequelize.define('userProjects', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    status: DataTypes.STRING
})
 
User.belongsToMany(Project, {  as: 'Tasks', through: UserProjects, foreignKey: 'userId' })
Project.belongsToMany(User, {  as: 'Workers',through: UserProjects ,foreignKey: 'projectId'})


// 添加一个 project, 并且,设置其状态为 started

user.addProject(project, { status: 'started' })


// 使用 through 可以选择特定属性

User.findAll({
  include: [{
    model: Project,
    through: {
      attributes: ['createdAt', 'startedAt', 'finishedAt'],
      where: {completed: true}
    }
  }]
});

相关文章

  • Sequelize 的表关联

    文章转载自:https://www.jianshu.com/p/8242b841de9d 一对一 hasOne &...

  • sequelize嵌套关联表如何插入数据?

    一共三张表,用户表关联用户信息表,用户信息表又关联用户地址表,那怎么根据用户信息表往地址表中插入数据?

  • orm 使用Sequelize

    Adservice 数据库使用mysql orm 使用Sequelize 表映射使用 sequelize-auto...

  • Associations(关联)

    Associations(关联) 本章节描述sequelize中不同关联类型,这里有4种类型的关联可以使用。 Be...

  • Sequelize 关联查询

    一对一关系 用户表与用户信息表一个用户只有一张用户信息表 注意: 如果在定义关系时,使用as,则在使用includ...

  • Sequelize Associations 详解

    Sequelize 一共有四种关联关系(Association)可供选择: BelongsTo HasOne Ha...

  • mysql关联更新update

    mysql关联更新update,mysql关联修改 关联修改a表,将b表数据赋值给b表

  • sequelize

    const Sequelize = require('sequelize');const sequelize = ...

  • Sequelize(2) 定义表格

    定义 定义模型与表之间的映射,使用 define 方法. Sequelize 会自动增加 createdAt 和 ...

  • Sequelize(2) 定义表格

    定义 定义模型与表之间的映射,使用 define 方法. Sequelize 会自动增加 createdAt 和 ...

网友评论

    本文标题:Sequelize 的表关联

    本文链接:https://www.haomeiwen.com/subject/srvpgqtx.html