Warum erhalte ich beim Zugriff auf den Benutzernamen im Laravel 5-Nachrichtenartikel die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen'?

Mary-Kate Olsen
Freigeben: 2024-11-15 12:29:02
Original
344 Leute haben es durchsucht

Why am I Getting

Kein Zugriff auf Objekteigenschaft – Laravel 5

Problembeschreibung

Ein Versuch, den Namen eines Benutzers aus einem News-Artikel wiederzugeben, schlägt fehl , was zu folgendem Fehler führt:

ErrorException: Trying to get property of non-object
Nach dem Login kopieren

Code-Kontext

Modelle

class News extends Model
{
    public function postedBy()
    {
        return $this->belongsTo('App\User');
    }
}

class User extends Model
{
    protected $fillable = ['name', ...];
}
Nach dem Login kopieren

Schema

  • Tabelle: Benutzer mit der Spalte „Name“
  • Tabelle: Nachrichten mit der Spalte „postedBy“, die auf Benutzer verweisen

Controller

public function showArticle($slug)
{
    $article = News::where('slug', $slug)->firstOrFail();
    return view('article', compact('article'));
}
Nach dem Login kopieren

Blade Template

{{ $article->postedBy->name }}
Nach dem Login kopieren

Erläuterung

Der Fehler tritt auf, weil die Abfrage im Controller (News::where('slug' , $slug)->firstOrFail()) gibt ein Array zurück, kein Objekt. Wenn Sie versuchen, auf ->postedBy in einem Array zuzugreifen, wird die Eigenschaft nicht erkannt und der Fehler wird ausgegeben.

Um das Problem zu beheben, müssen Sie das Array in ein Objekt konvertieren, bevor Sie auf ->postedBy zugreifen Eigentum. Dies kann durch die Verwendung der findBySlug-Methode im News-Modell anstelle von firstOrFail() erfolgen:

public function showArticle($slug)
{
    $article = News::findBySlug($slug); // Returns an object
    return view('article', compact('article'));
}
Nach dem Login kopieren

Dadurch können Sie erfolgreich auf die ->postedBy-Eigenschaft des Objekts zugreifen und den Namen des Benutzers anzeigen die Blade-Vorlage.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Zugriff auf den Benutzernamen im Laravel 5-Nachrichtenartikel die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage