我一直在使用sequelize,但从来没有真正理解return db.Video.Where(x => x.VideoName.StartsWith(search));
实际上是如何工作的。在他们的文件中,他们说:
目标键是源模型上的外键列指向的目标模型上的列。
所以在以下情况下,哪个是目标?
foreignKey
我的困惑在于为什么在第一种情况下我将foreignKey放在SubareaId上,但对于第二种情况我把它作为routeId。如果对于这两种情况都不是routeId,那么foreignKey应该是sourceId吗?
答案 0 :(得分:6)
我建议按以下步骤推理:
hasOne
和hasMany
放入目标; belongsTo
将fk放在 source 上; belongsToMany
将fk放在直通模型上。 hasOne
和hasMany
将是对源模型的引用; belongsTo
对目标模型的引用; belongsToMany
对源模型的引用(您可以使用otherKey:
引用目标模型)。 belongsToMany
是一种特殊情况,因为引入了第三个模型:直通模型(或连接表),其中存储了源和目标的外键。这有点改变了外键的“视角”,因此无法在外键引用方面与belongsTo
完全比较。
回答你的问题:
belongsToMany
是外键的例外
既不存储在源也不存在于目标,而是存储在直通模型上。