2016-08-07 21 views
0

Ich versuche, die folgende Abfrage im Bücherregal zu bekommen, irgendwelche Ideen? (Diese Abfrage funktioniert und gibt das gewünschte Ergebnis)Bookshelf verschachtelte Abfrage

SELECT "restaurants".*, "meals".*, (select count(*) from "public"."visitors" as "visitors" where "visitors"."meal_id" = "meals"."id") as "visitorsMealsCount" FROM "public"."restaurants" as "restaurants" inner join "public"."meals" as "meals" ON "meals"."restaurant_id" = "restaurants"."id" WHERE "restaurants"."id" = '123' 

eine andere Frage, nachdem ich bin mit belongsTo und hasMany (zum Beispiel) i das Rückgabeobjekt erwartet wird, dass

ähnlich sein
restaurants (obj) 
    meals (obj) 
    visitorsMealsCount (attribute) 

Antwort

0

Für mich entspricht Ihre SQL-Anweisung nicht dem Konzept eines ORM-Tools wie Bookshelf - es gibt weder Restaurants noch Mahlzeiten zurück, sondern eine großartige Mischung.

Wie zu Ihrer zweiten Frage: Wie wäre es mit new Restaurant({id: '123'}).fetch({ withRelated: ['meals']})?

visitorsMealsCount: Im documentation I see

adminAccounts: function() { 
    return this.belongsToMany(Account).query({where: {access: 'admin'}}); 
}, 

so vielleicht

visitorsMealsCount: function() { 
    return this.belongsToMany(Visitor).count(); 
} 

funktioniert? (Ich habe es nicht versucht.)