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

Mary-Kate Olsen
Lepaskan: 2024-11-15 12:29:02
asal
345 orang telah melayarinya

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
Salin selepas log masuk

Kod Konteks

Model

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

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

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'));
}
Salin selepas log masuk

Templat Bilah

{{ $article->postedBy->name }}
Salin selepas log masuk

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'));
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan