【问题标题】:How to use multiple belongsTo in bookshelfjs?如何在 bookshelfjs 中使用多个 belongsTo?
【发布时间】:2018-05-15 09:07:24
【问题描述】:

我有一个名为“class”的表,它有两个外键 attendance_idsyllabus_id,但使用 JOIN 我只能得到一个外键值,这是我的模型,

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”表中获取数据。

【问题讨论】:

    标签: node.js angular foreign-keys angular2-forms bookshelf.js


    【解决方案1】:
    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']})
    

    【讨论】:

    • 所以,真正的问题是 syllabus_name 表的外键没有使用 Bookshelf 所期望的约定,这是表名的单数形式加上 _id 附加到结束:syllabus_name_id。由于您使用的是不同的外键,因此您必须将其指定为 .belongsTo() 的第二个参数。
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多