join - 在 sequelize 中加入表
问题描述
我正在尝试通过加入 4 个表从数据库中获取数据。由于续集对我来说是新的,我不能请任何人帮我这样做。这是必须在 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
模型(或 s 数组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'],
},
],
});
推荐阅读
- c# - Rebus 中未处理的随机消息
- c# - Linq 查询从多个表中获取计数
- performance - Access/SQL 查询性能 - 基于多个数据源创建唯一列表
- database - 如何在数据库浏览器中为 SQLite 的“浏览数据”视图应用通配符和“非”?
- c# - .net core 中项目之间的身份验证
- javascript - React Native - 如何在类组件中初始化对象?
- php - PHP 错误:警告:非法字符串偏移 'rating'
- python-2.7 - 如何增加可见性_超时
- java - 如何同时重新加载所有片段
- postgis - 如何获取我的geom中的点与入口点经度和纬度之间的距离