B.belongsTo(A)
和A.hasMany(B)
Artist = sequelize.define('Artist', {});
Album = sequelize.define('Albums', {});
Album.belongsTo(Artist, foreignKey: 'album_belongsl_artist');
Artist.hasMany(Album, foreignKey: 'artist_hasmany_albums');
如果在两种情况下都在Album
中创建了依赖的表?
答案 0 :(得分:83)
当您执行Album.belongsTo(Artist)
时,您正在创建关系,以便您致电album.getArtist()
。 Artist.hasMany(Album)
以其他方式链接关联,使您可以拨打artist.getAlbums()
。如果你只做了这两个中的一个,例如如果你只做了Album.belongsTo(Artist)
,你就能找到一张专辑的艺术家,而不是艺术家的所有专辑。
但请注意,由于示例中给出的外键,您实际上是在创建两个关系。生成的表如下所示:
CREATE TABLE IF NOT EXISTS `Albums` (`id` INTEGER NOT NULL auto_increment , `album_belongsl_artist` INTEGER, `artist_hasmany_albums` INTEGER, PRIMARY KEY (`id`))
如果您只想要一个关联,则foreignKey应该相同。例如:
Album.belongsTo(Artist, {foreignKey: 'artist_id'});
Artist.hasMany(Album,{ foreignKey: 'album_id'});
生成:
CREATE TABLE IF NOT EXISTS `Albums` (`id` INTEGER NOT NULL auto_increment , `album_id` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;