我试图通过加入 4 个表从数据库中获取数据。由于 Sequelize 对我来说是新的,我不能请任何人帮助我做到这一点。这是必须在 ORM sequelize 中完成的查询。
select p.page_id,p.page_title,pt.page_type_id,pt.page_type_name,e.exam_id,e.exam_name,m.menu_id,m.name,p.is_published,p.created_date,p.status_id from el_pages as p join el_page_types as pt on pt.page_type_id=p.page_type_id join el_exams as e on e.exam_id=p.exam_id join el_menus as m on m.menu_id=p.menu_id
最佳答案
您需要首先定义 Model
,然后使用它来查询模型的 Instance
(或 Instance
数组)。列名是从模型定义中推断出来的,或者您可以使用 attributes
指定它们。使用 include
连接其他表。
模型
/* Define `Models` for Page, PageType, Exam, and Menu and
create associations/relationships between them */
const PageType = sequelize.define(
'page_type',
{ /* define fields */ },
{ /* define options */ }
);
module.exports = PageType;
const Exam = sequelize.define(
'exam',
{ /* define fields */ },
{ /* define options */ }
);
module.exports = Exam;
const Menu = sequelize.define(
'menu',
{ /* define fields */ },
{ /* define options */ }
);
module.exports = Menu;
// ...add additional Models
const Page = sequelize.define(
'page',
{ /* define fields */ },
{ /* define options */ }
);
// add relationships to other models
Page.associate = (models) => {
Page.belongsTo(models.PageType);
Page.hasMany(models.Exam);
Page.hasMany(models.Menu);
// ...additional relationships
};
module.exports = Page;
查询
// Query using the following syntax
const pages = await Page.findAll({
attributes : ['page_id', 'page_title', 'is_published', 'created_date', 'status_id'],
include: [
{
model: PageType,
attributes : ['page_type_name'],
},
{
model: Exam,
attributes : ['exam_id', 'exam_name'],
},
{
model: Menu,
attributes : ['name'],
},
],
});
关于在 sequelize 中连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52484319/