2017-10-03 1 views
0

Ich habe eine einfache App, mit Laravel 5.5.13.Load nur IDs der Beziehung (zupfen)

public function index() 
{ 
    return Pet::all(); 
} 

Hier sind alle Haustiere aufgeführt. Ich habe viele zu vielen Beziehungen, wo viele Benutzer ein und dasselbe Haustier (die menschliche Familie des Haustiers) besitzen können.

Ich möchte diese Benutzer laden.

return Pet::with('users')->get(); Doing funktioniert der Trick, aber es lädt alle Arten von übermäßigen infromation, wie die Benutzer api_token etc, ich möchte nur einige Felder auswählen, wie id und name:

Ich hatte gehofft, um nur users: [1, 12] für das Beispiel im obigen Screenshot zu bekommen.

Ich habe versucht, so return Pet::with('users')->get()->pluck('id') zu pflücken, aber das gibt mir nur die IDs.

Antwort

1

Wenn Sie nur gesuchte Benutzer-IDs zu erhalten, wo alle passenden Benutzer mindestens ein Haustier haben, können Sie versuchen:

// Retrieve all users that have at least one pet 
return User::has('pets')->get(['id']); 

Falls ich Sie Missverständnisse und Sie wollen immer noch alle die Pet Informationen können Sie einen Doppelpunkt verwenden, um bestimmte Spalten in einer Beziehung zu holen:

// Returns all Pets, along with their users' IDs 
return Pet::with('users:id')->get(); 
+0

Danke Herr das ist sehr cool! Es ist viel näher an dem, was ich brauchte, aber nicht genau, möge es dir gefallen: Ich muss alle Infos über Haustiere auflisten, nicht die Benutzer, die mindestens ein Haustier haben. Mit 'Pet :: with ('users: id') -> get()' gibt es mir jetzt: ein Array von Objekten, aber es enthält den Pivot - https://screenshots.firefoxusercontent.com/images/e728c34c-6bf3 -4b37-b05c-2b9729cecde9.png - – Blagoh

1

Sie können bestimmte Felder wie folgt aus:

Pet::with(['users' => function($query) { $query->select('id', 'name'); }])->get() 
+0

Vielen Dank das ist sehr cool! Allerdings brauchte ich nur ein Array von IDs im Benutzereintrag. Es gibt eine Reihe von Objekten einschließlich 'Pivot' - https://screenshots.firefoxusercontent.com/images/e728c34c-6bf3-4b37-b05c-2b9729cecde9.png – Blagoh

+1

vielleicht funktioniert dies für Sie ' Pet :: mit ([ 'users' => funktion ($ query) {$ query-> select ('id', 'name') -> ohne ('pivot');}]) -> get() ' –

+0

Danke @Leonardo aber es ist nicht Entfernen Pivot :(, Es ist auch immer noch ein Array von Objekten mit '{ID: 12}' anstatt Array von ID-Ganzzahlen :( – Blagoh

Verwandte Themen