gpt4 book ai didi

sql - Sequelize.js 中的 belongsTo 与 hasMany

转载 作者:IT老高 更新时间:2023-10-28 21:52:42 27 4
gpt4 key购买 nike

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 中创建依赖表?

最佳答案

当您执行 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: 'artist_id'});

生成:

CREATE TABLE IF NOT EXISTS `Albums` (`id` INTEGER NOT NULL auto_increment, `artist_id` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;

关于sql - Sequelize.js 中的 belongsTo 与 hasMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290815/

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