2017-12-01 13 views
0

내가 "클래스"이름을 가진 하나 개의 테이블을 가지고 있고이 두 개의 외래 키 을 syllabus_id attendance_id 가지고,하지만 난 단 하나의 외래 키 값을 얻을 수 있습니다 조인을 사용, 여기에 내 모델입니다bookshelfjs에서 여러 belongsTo를 사용하는 방법은 무엇입니까?

var AttendanceType = bookshelf.Model.extend({ 
    tableName: 'attendance_type', 
}); 
var SyllabusName = bookshelf.Model.extend({ 
    tableName: 'syllabus_name',}); 
var Class = bookshelf.Model.extend({ 
    tableName: 'class', 
AttendanceRef: function() { 
    return this.belongsTo(AttendanceType); 
}, 
SyllabusRef: function() { 
    return this.belongsTo(SyllabusName); 
} 
}); 
module.exports = Class; 

는 여기

.fetchAll({ withRelated: ['AttendanceRef','SyllabusRef']}) 

, 내 컨트롤러하지만 난 "attendance_type"테이블의 데이터 만 얻을.

답변

3
var AttendanceType = bookshelf.Model.extend({ 
    tableName: 'attendance_type', 
}); 

var syllabusName = bookshelf.Model.extend({ 
    tableName: 'syllabus_name', 
}); 

var Class = bookshelf.Model.extend({ 
    tableName: 'class', 
    AttendanceRef: function() { 
     return this.belongsTo(AttendanceType,'attendance_type_id'); 
    }, 
    SyllabusNameRef: function() { 
     return this.belongsTo(syllabusName,'syllabus_id'); 
    } 
}); 
module.exports = Class; 

여기 내 컨트롤러입니다.

.fetchAll({ withRelated: ['AttendanceRef','SyllabusNameRef']}) 
+1

그래서, 진짜 문제는'syllabus_name' 테이블에 대한 외래 키가 끝에 추가 _id''와 테이블 이름의 단수 형태의 책장 기대 된 규칙을 사용하지 않는 것을이었다 :'실라버스 _ 이름 '. 다른 외래 키를 사용하고 있으므로'.belongsTo()'의 두 번째 인수로 지정해야합니다. – devius