对续集关联一对多和一对一单向感到困惑
Posted
技术标签:
【中文标题】对续集关联一对多和一对一单向感到困惑【英文标题】:Confused about sequelize associations One-To-Many and One-To-One unidirectional 【发布时间】:2014-03-24 04:01:54 【问题描述】:我有以下实体:
用户(姓名、电子邮件、密码) 目标(标题、描述) 照片(文件名、路径、内容类型) 目标照片(fk_goal、fk_photo)用户有很多目标 - 它工作正常。将外键添加到目标表 用户有一张照片 - 不起作用。 Goal hasMany Photo on join table model GoalPhoto - 不起作用。
照片与用户和目标没有任何关联,但用户和目标实体分别具有一对一和一对多。照片不属于任何模特。
当我放入 User.hasOne(Photo) 时,它会在 Photo 表中创建外键,但我只需要 User (fk_photo) 中的外键。 当我输入 Goal.hasMany(Photo, as: 'photos', joinTableModel: GoalPhoto, foreignKey: 'fk_goal' ) 它会在 Photo 表中创建外键,但我想要一个带有 Goal 和 Photo 外键的 JoinTable。
我该如何解决?
【问题讨论】:
【参考方案1】:在用户表中创建外键(photo_id):
User = sequelize.define('User', );
Photo = sequelize.define('Photo', );
Photo.hasOne(User);
User.belongsTo(Photo);
创建联接表:
GoalPhoto = sequelize.define('GoalPhoto', );
Goal.hasMany(Photo, through: GoalPhoto);
Photo.hasMany(Goal, through: GoalPhoto);
【讨论】:
是的,它有效,但听起来有点奇怪,因为照片没有用户,但用户有一张照片。 sequelizejs.com/docs/latest/associations#block-14-line-22 你可以这样做: photo_id: type: DataTypes.INTEGER, references: "Photo", referencesKey: "id"以上是关于对续集关联一对多和一对一单向感到困惑的主要内容,如果未能解决你的问题,请参考以下文章