我需要使用sequelize执行此查询:
SELECT movie, genre FROM `yt_movies` M
LEFT JOIN `genres_link` GL ON M.id = GL.movie_id
WHERE M.id = 1098
我试过了
const YtMovies = db.yt_movies;
const Genres = db.genres;
const GenresLink = db.genres_link;
YtMovies.hasMany(GenresLink, { as: 'GL' });
YtMovies.hasMany(Genres, { as: 'G' });
const res = await db.yt_movies.findAll({
attributes: ['movie'],
where: { id: movie_id },
include: [
{
model: db.genres_link,
as: 'GL',
required: false,
// where: { movie_id },
attributes: ['genre_id'],
},
],
}
但它返回
SELECT
`yt_movies`.`id`,
`yt_movies`.`movie`,
`GL`.`id` AS `GL.id`,
`GL`.`genre_id` AS `GL.genre_id`
FROM `yt_movies` AS `yt_movies`
LEFT OUTER JOIN `genres_link` AS `GL`
ON `yt_movies`.`id` = `GL`.`yt_movie_id` WHERE `yt_movies`.`id` = 1098;
最后一个字符串两行不正确,我期望 movie_id
而不是 yt_movie_id
。项目中没有名称为 yt_movie_id
的列
LEFT JOIN `genres_link` GL
ON `yt_movies`.id = `GL`.`movie_id` WHERE `yt_movies`.`id` = 1098;
请停止 谢谢!
最佳答案
如果您想使用特定列进行关联,则需要提供 sourceKey 和foreignKey 选项。
试试这个:
YtMovies.hasMany(GenresLink, { as: 'GL' , foreignKey: 'movie_id'})
关于javascript - 如何将mysql查询转换为sequelize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55338777/