Ich verstehe, dass diese Frage mehr als eine DBMS-bezogene Antwort haben kann, aber vielleicht nicht, also hier geht es.Laravel (Eloquent) Äquivalent von Mongoose populate() -Methode
Also, ich brauche meine App asynchron einige Daten aus dem Back-End zu greifen, sagen so etwas wie eine User
und seine Posts
. Ich verwende Vue2 mit Axios auf dem Frontend, so dass es schön wäre, wie etwas zu schreiben:
mounted: function() {
axios.get('/users')
.then((response) => {
this.users = response.data;
})
.catch(function (err) {
// Handle this
});
}
Das Resultat, das ich Objekt haben möchte ist das users
in meinem VueVM Daten auch eine Reihe von enthalten posts
für jeden User
. Derzeit baue ich eine benutzerdefinierte assoziatives Array in meinem Back-End-Seite-Controller wie folgt:
$posts = Post::where('user_id', $id)->get();
return json_encode(['user' => $user, 'posts' => $posts]);
Oder wenn dies möglich ist, verwende ich die has_many
Methode, die auch ziemlich praktisch ist, aber ich finde diese Lösung ziemlich hässlich und ohne Wiederverwertbarkeit .
Mit Mongoose und MongoDB würde ich die populate()
Methode verwenden, aber ich kann nicht finden (das ist eigentlich ich weiß nicht, wie man danach sucht) ein Äquivalent zu diesem mit Eloquent.
Irgendwelche Vorschläge?
Yup, das war es. Entschuldigung, ich hätte mehr Zeit mit den Dokumenten verbringen sollen. Für alle, die nach detaillierteren Informationen suchen, ist der richtige Abschnitt: https://laravel.com/docs/5.5/eloquent-relationships#eager-loading – ibanjo