sql - 在 sequelize 中定义与自引用表的 belongsToMany 关系
问题描述
我有“用户”表,其中 phoneNumber 作为表列。
我想有关联,以便每个用户可以添加许多联系人......基本上联系人将是其他用户。
通常在多对多关系中,我们有两个表和一个连接表。但是我可以有一个表,即用户表和一个引用用户本身的连接表吗?
我的用户表:
const User = sequelize.define(
"users",
phone_number: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
} );
我可以在没有“联系人表”的情况下使用此关联来关注“UserContact”加入表吗
User.associate = (models) => {
models.User.belongsToMany(models.Contact, {through: 'UserContact' })
};
我的 UserContact 表:
const UserContact = sequelize.define(
"user_contacts",
{
user_id: {
type: DataTypes.INTEGER,
allowNull: false,
},
contact_id: {
type: DataTypes.INTEGER,
allowNull: false,
},
}
);
有没有其他方法,比如通过用户表本身的某个字段引用联系人?同样,一个用户应该有一个或多个联系人。
解决方案
您可以User
在关联中指示模型并为双方指示字段:
User.associate = (models) => {
models.User.belongsToMany(models.User, {through: 'UserContact' }, foreignKey: 'user_id', otherKey: 'contact_id')
};
推荐阅读
- pyspark-sql - 使用 Spark SQL 计算 postgresql 查询
- c - 生产者消费者同步只使用互斥锁和信号量(无 pthread_cond)
- mysql - SQL - 选择与 3 个组合条件中的几个匹配的值
- bash - 如何使用 python 包装器在 bash 中执行管道?
- jquery - 尝试遍历 DataTable 行时未定义 tr 和 row
- terraform - 使用 terraform 在 paloalto 上创建聚合以太网接口?
- angular - 模态可滚动内容不滚动并且页脚被隐藏
- python - 如何在 Python 中实现流水线?
- python - 是否有一个功能可以打印不带 sys.stdout.write 或 print("",end="") 的换行符?
- javascript - 围绕一个点创建一个三角形,垂直于法线