Meine generische Frage ist, wenn Sie ein Datamodell so etwas wie A (1) -> B (viele) -> C (viele) -> D (viele) haben und Sie wollen raus Objekte von D, aber Sie haben nur Kriterien für A, wie können Sie das tun?Bookshelf Query Join multiple Tabellen mit, wo Kriterien
Besonderheiten hier:
const Contact = bookshelf.Model.extend({
sites: function() {
return this.hasMany(Site);
},
});
const Contacts = bookshelf.Collection.extend({
model: Contact,
});
const Site = bookshelf.Model.extend({
siteAttendances: function() {
return this.hasMany(SiteAttendance);
},
siteSupervisor: function() {
return this.belongsTo(Contact);
},
});
const Sites = bookshelf.Collection.extend({
model: Site,
});
const SiteAttendance = bookshelf.Model.extend({
site: function() {
return this.belongsTo(Site);
},
incidents: function() {
return this.hasMany(Incident);
},
});
const SiteAttendances = bookshelf.Collection.extend({
model: SiteAttendance,
});
const Incident = bookshelf.Model.extend({
siteAttendance: function() {
return this.belongsTo(SiteAttendance);
}
});
const Incidents = bookshelf.Collection.extend({
model: Incident,
});
Ich habe einen Kontakt-ID (A-Objekt) bekommen, aber ich mag Objekte, die Vorfälle (D-Objekt) und ich frage mich sind, kann ich dies tun, mit nur Bücherregal. js? Für jeden Kontakt gibt es VIELE Sites und Site Attendances, aber nur wenige Incidents. Eine Kontakt-ID wird viele Sites ergeben, also könnte es einen Weg geben, von Incident zur Site mit einer through
zu gehen, aber ich konnte das nicht zum Laufen bringen. Ich glaube nicht, dass ich bei Contact anfange und withRelated
den ganzen Weg hinunter mache, ist der richtige Ansatz (da es so viele von Site und SiteAttendance gibt), aber ich könnte falsch liegen.
Das habe ich mir gedacht. Gibt es für solche Dinge einen Konsens darüber, dass man nicht mit Bücherregal knex kleben sollte? – ricka