2016-04-12 13 views
0

Ich habe drei Modelle: Event, Gallery und Image. Ein Image ist das Basismodell und repräsentiert ein einzelnes Medienstück. A Gallery ist eine Sammlung von Images von einem Benutzer eingereicht. Benutzer interagieren nur mit Images auf der Ebene Gallery, indem sie Gruppen von Images zu der Zeit in der Form von Singular Galleries erstellen, ändern und löschen. Eine Event ist eine Sammlung von Galleries, die den Inhalt mit bestimmten realen Ereignissen verknüpfen.Verbinden von Objekten über mehrere Join-Tabellen

So sind meine Beziehungen wie folgt: durch Bücherregal ist Event -> Event_Galleries -> Gallery -> Gallery_Images -> Image

Meine Frage, ist es eine Möglichkeit, eine Beziehung von der Event zum Image der Verwendung der bestehenden beitreten Tabellen angeben? Es würde funktionieren wie folgt:

Event -> Event_Galleries where Event_Galleries.event_id = Event.id -> Gallery_Image where Event_Galleries.gallery_id = Gallery_Image.gallery_id -> Image where Image.id = Gallery_Image.image_id

Antwort

1

Ja, können Sie Beziehungen in einem Bookshelf.js Modell angeben, im Anschluss an diese Art und Weise:

const Company = db.bookshelf.Model.extend({ 
    tableName: 'companys', 
    hunters: function employees() { 
     return this.hasMany(Employee, 'company_id'); 
    } 
}); 

const Employee = db.bookshelf.Model.extend({ 
    tableName: 'employees', 
    company: function company() { 
     return this.belongsTo(Company); 
    }, 
    addresses: function addresses() { 
     return this.hasMany(EmployeeAddress); 
    }, 
}); 

const EmployeeAddress = db.bookshelf.Model.extend({ 
    tableName: 'employees_addresses', 
    employee: function employee() { 
     return this.belongsTo(Employee); 
    } 
}); 

Company.where({ id: 42 }).fetch([ withRelated: 'employees', 'employees.addresses' ]) 
.then(result => { 
    console.log(result); 
}, error => { 
    console.log(error); 
}) 
Verwandte Themen