2013-04-17 32 views
0

我有以下實體:上sequelize即時加載協會

var Group = sequelize.define("Group", { name: Sequelize.STRING }); 
var Course = sequelize.define("Course", { name: Sequelize.STRING }); 
var GroupHasCourse = sequelize.define("GroupHasCourse", { name: Sequelize.STRING }); 
var Student = sequelize.define("Group", { name: Sequelize.STRING }); 

與以下關聯:

Course.hasMany(GroupHasCourse, { as: "GroupsOnCourses"}); 
Group.hasMany(GroupHasCourse, { as: "CoursesOnGroups"}); 
GroupHasCourse.hasMany(Student, { as: "Students"}); 

兩個問題:

  1. 這是做的最好的方法爲了讓學生進入亞軍團隊之間的關係?
  2. 我做下面的查詢:

    我怎樣才能得到同樣的左連接在該查詢,所以我不需要做有

    Group.find(courses[0].groupsOnCourses[0].GroupId) 
    

回答

0

因此,這已經可與1.6.0:

var Sequelize = require('sequelize') 
var sequelize = new Sequelize('sequelize_test', 'root') 

var Group = sequelize.define("Group", { name: Sequelize.STRING }) 
var Course = sequelize.define("Course", { name: Sequelize.STRING }) 
var GroupHasCourse = sequelize.define("GroupHasCourse", { name: Sequelize.STRING }) 
var Student = sequelize.define("Group", { name: Sequelize.STRING }) 

Course.hasMany(GroupHasCourse, { as: "GroupsOnCourses"}) 
Group.hasMany(GroupHasCourse, { as: "CoursesOnGroups"}) 
GroupHasCourse.hasMany(Student, { as: "Students"}).belongsTo(Group).belongsTo(Course) 

sequelize.sync({ force: true }).success(function() { 
    Group.create({ name: 'group' }).success(function(group) { 
    Course.create({ name: 'course' }).success(function(course) { 
     GroupHasCourse.create({ name: 'bla' }).success(function(groupHasCourse) { 
     groupHasCourse.setGroup(group).success(function() { 
      groupHasCourse.setCourse(course).success(function() { 
      GroupHasCourse.findAll({ 
       include: [ Group, Course ] 
      }).success(function(groupHasCourses) { 
       console.log(groupHasCourses[0].values) 
      }) 
      }) 
     }) 
     }) 
    }) 
    }) 
}) 
+0

是的,這工作,實際上我有相同的代碼,但我需要的是從組中查詢,並以某種方式獲取有關課程的信息槽GroupHasCourses –

2

做另一個查詢您需要連接表以獲取更多數據,或者您只需連接Corse和Group?如果你只是想連接它們,你可以這樣做:

Course.hasMany(Group) 
Group.hasMany(Course) 

這將爲你自動創建連接表。如果你想這樣,你的下一個將是,你等待第一個alpha/beta /無論Sequelize 1.6.1哪一個將支持多對多的關聯加載。該版本將在本週內提供。

問候, sdepold

+0

需要連接表讓學生可以有很多-to-many關聯到許多一對多課程與小組之間的關聯。猜猜我會等待它:) –

+0

你在MySQL嗎? – sdepold

+0

是的,使用MySQL –