gpt4 book ai didi

mysql - Sequelize 中带有联接表的配偶关系

转载 作者:行者123 更新时间:2023-11-29 15:54:57 24 4
gpt4 key购买 nike

尝试对配偶关系进行建模,类似于https://stackoverflow.com/a/4378624中的连接表选项使用Sequelize Typescript .

这确实有效,但看起来不太好。为了查找一个人是否处于婚姻状态,看起来我必须加入表中的 person1Idperson2Id (在我的示例中,有 @HasOnePerson 模型中定义了两次)。

// Marriage Model
@Column
person1Id: number;
@BelongsTo(() => Person, { foreignKey: { allowNull: false, name: 'person1Id' }, onUpdate: 'CASCADE', onDelete: 'CASCADE' })
person1: Person;

@Column
person2Id: number;
@BelongsTo(() => Person, { foreignKey: { allowNull: false, name: 'person2Id' }, onUpdate: 'CASCADE', onDelete: 'CASCADE' })
person2: Person;

// marriage date, other properties, etc.
// Person Model
@HasOne(() => Marriage, { foreignKey: 'person1Id' })
marriage1: Marriage;

@HasOne(() => Marriage, { foreignKey: 'person2Id' })
marriage2: Marriage;
// really the person only has one marriage, but needed if `Person.id === Marriage.person2Id`

我已尝试以下操作,但如果它们是连接表中的 person2Id,则无法检索婚姻。

// DOES NOT WORK
// Person Model
@HasOne(() => Marriage)
marriage: Marriage;


// Retrieving it somewhere else
somePerson = await Person.findOne<Person>({
include: [
{
model: Marriage,
as: 'marriage'
}
], where: { id: personId }
});

// somePerson.marriage is `undefined` if `Person.id === Marriage.person2Id`!

任何有关如何使其变得更好的想法都将受到赞赏。

最佳答案

我建议仅通过使用外键来实现它,也许根本不会使用merage模型。一些例子here

关于mysql - Sequelize 中带有联接表的配偶关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56543800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com