Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Mendapat Ralat 'Mencuba untuk mendapatkan harta bukan objek' Semasa Mengakses Nama Pengguna dalam Artikel Berita Laravel 5?

Mengapa Saya Mendapat Ralat 'Mencuba untuk mendapatkan harta bukan objek' Semasa Mengakses Nama Pengguna dalam Artikel Berita Laravel 5?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-15 12:29:02344semak imbas

Why am I Getting

Tidak Dapat Mengakses Harta Objek - Laravel 5

Penerangan Isu

Percubaan untuk menggemakan nama pengguna daripada artikel Berita gagal , mengakibatkan ralat berikut:

ErrorException: Trying to get property of non-object

Kod Konteks

Model

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

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

Skema

  • Jadual: pengguna dengan lajur 'nama'
  • Jadual: berita dengan lajur 'postedBy' dipautkan ke pengguna

Pengawal

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

Templat Bilah

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

Penjelasan

Ralat berlaku kerana pertanyaan dalam pengawal (News::where('slug', $slug)->firstOrFail()) sedang mengembalikan tatasusunan, bukan objek. Apabila cuba mengakses ->postedBy pada tatasusunan, harta itu tidak dikenali dan ralat dilemparkan.

Untuk menyelesaikan isu, anda perlu menukar tatasusunan kepada objek sebelum mengakses ->postedBy harta benda. Ini boleh dilakukan dengan menggunakan kaedah findBySlug pada model Berita dan bukannya firstOrFail():

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

Ini akan membolehkan anda berjaya mengakses harta ->postedBy pada objek dan memaparkan nama pengguna dalam templat Blade.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Mencuba untuk mendapatkan harta bukan objek' Semasa Mengakses Nama Pengguna dalam Artikel Berita Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn