Holen Sie bestimmte Felder auf eine hasMany-Beziehung
Ich habe eine hasMany relation Funktion wie diese:
public function articles()
{
return $this->hasMany('App\Article');
}
Und verwenden Sie es wie diese:
$data = \App\User::with('articles')->get();
Habe ich keine Probleme mit ihm, da er zurückkehrte, die erwarteten Daten. So etwas wie dieses:
{
"id": 1,
"name": "Jhon",
"lastname": "Doe",
"articles": [
{
"id": 1,
"title": "Article 1",
"status": "published",
"published_at": "2015-04-30"
},
{
"id": 2,
"title": "Article 2",
"status": "draft",
"published_at": null
}
]
}
Was ich versuche zu erreichen, aber ich kann immer noch nicht es zu Holen, nur eine Teilmenge der Bezug auf den Feldern, um diese zu erhalten:
{
"id": 1,
"name": "Jhon",
"lastname": "Doe",
"articles": [
{
"id": 1,
"title": "Article 1"
},
{
"id": 2,
"title": "Article 2"
}
]
}
Meine Absicht ist es, einen Weg zu finden, geben Sie die Teilmenge der Felder in der Model-s-Funktion statt Durchlaufen die Rückkehr Sammlung und entfernt den unerwünschten Felder.
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einige Optionen:
Ändern Sie die beziehungsabfrage ausführen, wenn Sie es verwenden. Die
with()
Methode kann akzeptieren ein array von Schlüssel/Wert-Paare, wobei der Schlüssel den Namen der Beziehung und der Wert ist ein Verschluss, der ändert die Beziehung der Abfrage.Erstellen eine neue Beziehung, die die Felder enthält, die Sie wollen.
Wenn Sie nur besorgt über das array/json-Ausgabe können Sie die App\Artikel-Modell zeigt nur die id und den Titel, wenn konvertiert in ein array.
Was Sie wählen, hängt davon ab, was Sie brauchen.
NB: Für die Optionen 1 und 2 oben, die foreign key (
user_id
) muss so gewählt werden, dass Laravel weiß, wie link die Modelle, die gemeinsam beim Aufbau der Beziehungen.return $this->hasMany('App\Article')->select(['id', 'title', 'user_id']);
Dass foreign_key war die Antwort. Danke @patricus//user_id ist wichtig, hasmay Beziehungen