Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich beim Zugriff auf den Benutzernamen in einem Laravel 5-Nachrichtenartikel die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen'?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 12:29:02343Durchsuche

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

Code-Kontext

Modelle

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

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

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'));
}

Blade Template

{{ $article->postedBy->name }}

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'));
}

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 in einem 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!

Stellungnahme:
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