Присоединяйтесь к таблицам в дальнейшем - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь получить данные из БД, объединяя 4 таблицы.Поскольку сиквелиз является новым для меня, я не могу никого, пожалуйста, помогите мне сделать это.Вот запрос, который должен быть выполнен в sequelize ORM.

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 

1 Ответ

0 голосов
/ 25 сентября 2018

Сначала необходимо определить 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'],
    },
  ],
});
...