Postingan lainnya
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?
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
saya mau nampilin nama penerima sesuai undangan_id (yg relasi sama id undangan) nya gan. kan berarti butuh satu nama aja.
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