2016-09-10 4 views
0

Ich versuche, Benutzer zu ermöglichen, Profilfoto mit Laravel hochladen. Wenn ich die Funktion dp() auf meinem Benutzermodell ausführen, erhalte ich den Nicht-Objektfehler. Mein Benutzermodell: `` `Benutzerprofil Bilder in Laravel, Non-Objekt Fehler

public function dp() 
    { 
     return $this->hasMany('Blog\models\Dp', 'user_id'); 
    } 
    public function getDp() 
    { 
     if (!$this->dp()){ 
      return 'public/image/standard_dp.jpg'; 
     } 
     return $this->dp()->orderBy('created_at', 'desc')->first()->url; 
    } 

` `` Der Fehler ist angeblich in der vorletzten Zeile des Codes, aber wenn ich einen dd laufen, statt einer Rückkehr gibt es keine Fehler. Kann jemand helfen?

+0

Ich vermute, die 'erste()' Aufruf hat ein Nicht-Objekt zurückgegeben. Versuchen Sie 'dd ($ this-> dp() -> orderBy ('created_at', 'desc') -> first())' und sehen Sie, was es sagt. – ntzm

+0

Sie können 'firstOrFail()' auch verwenden, um zu debuggen –

Antwort

0

Versuchen Sie getDp() Methode mit diesem ersetzen:

public function getDp() 
{ 
    if ($this->dp->isEmpty()) { 
     return 'public/image/standard_dp.jpg'; 
    } 

    return $this->dp->sortByDesc('created_at')->first()->url; 
} 
+0

Danke, aber die isEmpty() und sortByDesc() Funktionen warfen Fehler – h834mi

0

Es funktionierte, als ich die getdp ersetzt() -Funktion mit dem folgenden:

 public function getDp() 
{ 
    if ($this->dp()->count()===0) 
    { 
     return 'public/image/standard_dp.jpg'; 
    } 
    return $this->dp()->orderBy('created_at', 'desc')->first()->url; 
}