2016-08-08 29 views
1

dieser Verwendung: Zugehörigkeit zu der ID des gefundenen BenutzerIn Laravel Eloquent, warum ist dies nicht richtig ausgewählt (keine Bedingung)?

profile = User::find($user)->with('profile')->first();

Wird eine Abfrage von SELECT * FROM profiles zurückkehren, anstatt das Profil auswählen.

Mein Benutzermodell ist wie folgt:

public function profile() { 
    return $this->hasOne('App\Models\UserProfile', 'user_id'); 
} 

Warum ist es nicht eine where Bedingung hinzuzufügen?

+0

Haben Sie versucht, sie neu zu ordnen: 'Benutzer :: mit ('Profil') -> finden ($ user) -> first();' – TheFallen

Antwort

1

Was find($id) wirklich tut, ist Ihre Abfrage zu erweitern, wie folgt aus:

// from 
User::find($user) 
// to 
User::where('id', $user)->take(1)->get('*')->first() 

Mit anderen Worten: Es schafft die Abfrage, schränkt sie in die erste Reihe, wird diese Zeile - die eine Sammlung zurück - und dann Gibt das erste Element in dieser Sammlung zurück.

Das bedeutet, dass Ihre with('profile') an das Objekt, nicht an den Abfrage-Generator angefügt wird, und dann Sie einen anderen first() Aufruf an diesen richten.

Was Sie tun sollten, stattdessen ist

User::with('profile')->find($user); 

... die ich Arbeiten übernehmen, aber ich habe es nicht getestet. :)