Trying to get property of non-object (one to many)

hallo gan, mau tanya tentang one to many. jad saya tabel undangan (url, judul, deskripsi, isi_undangan, nama_mepelai_lk , nama_mempelai_pr) dan tabel penerima (nama , undangan_id), 1 undangan punya banyak penerima.

Model Undangan.php

  public function penerima()
    {
        return $this->hasMany('App\Penerima');
    }

Model Penerima.php

     public function Undangan()
    {
        return $this->belongsTo('App\Undangan');
    }

UndanganController.php

    public function show($url)
    {
    $undangan=Undangan::where('url' , $url)->first();
    return view('undangan.show', compact('undangan'));
    }

nah saya mau ambil data nama penerima di view undangan.show


<h1> {{ $undangan->judul }}</h1>
<h2> {{ $undangan->deskripsi }}</h2>
<p> {{ $undangan->penerima->nama}} </p>

lalu muncul error Trying to get property of non-object

nah itu gmana ya?

avatar irestuf
@irestuf

51 Kontribusi 3 Poin

Diperbarui 6 tahun yang lalu

3 Jawaban:

untuk menampilkan value Penerima harus memakai foreach, karena return data dari relasi 'one to many' berupa collection


<h1> {{ $undangan->judul }}</h1>
<h2> {{ $undangan->deskripsi }}</h2>
foreach ($undangan->penerima as $p) {
    <p> {{ $p->nama}} </p>
}

https://laravel.com/docs/5.5/eloquent-relationships#one-to-many

avatar zarchp
@zarchp

7 Kontribusi 5 Poin

Dipost 6 tahun yang lalu

saya mau nampilin nama penerima sesuai undangan_id (yg relasi sama id undangan) nya gan. kan berarti butuh satu nama aja.

avatar irestuf
@irestuf

51 Kontribusi 3 Poin

Dipost 6 tahun yang lalu



public function show($url)
    {
        $undangan = Undangan::with(array('penerima' =>function($query){
          $query->orderBy('url','DESC');
      }))->findOrFail($url);

      return view('undangan.show', compact('undangan'));
    }

ini meng get id undangan gan berikut penerimanya

avatar indra09
@indra09

31 Kontribusi 4 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban