对续集关联一对​​多和一对一单向感到困惑

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"

以上是关于对续集关联一对​​多和一对一单向感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate学习———— hibernate一对一关系映射详解

Hibernate映射( 多对一对一对多多对多)的配置方法

Hibernate映射关系:一对一对多和多对多

hibernate--单向一对多

hibernate入门三之关联映射(一对多和多对一)

SQLAlchemy学习-9.一对多和多对一关系