Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 21.05.2018 19:22:47

root
Üye
Kayıtlı: 05.05.2018
Mesajlar: 6

Trying to get property of non-object Hatası

Merhaba
Araştırdım ama çözüm bulamadım son çare olarak buraya yazıyorum. Şöyle birşey yapmaya çalışıyorum basit bir blog sistemi.

Yazı eklerken yazı resminin yolunu veritabanına ayrı bir tabloda kaydediyorum. Resim tablosunda, ait olduğu yazının id'si için bir alan var. İlişkilendirmede mi yanlış yapıyorum bilmiyorum. Blog ana sayfasında yazı başlığını, kategoriyi vs. gösterebiliyorum ama ne yaptıysam resimler tablosundaki ilgili satırı gösteremedim. Resimlerin hepsini aynı klasöre kaydedip o şekilde gösterebilirim ama resimler klasöründe img/2018/05/20 gibi bir klasör yapısı kullanıyorum. Bu nednele veritabanından tam resim yolunu çekmek istiyorum.

BlogResim isimli model şu şekilde:

class BlogResim extends Model
{
    protected $table = 'blog_resimler';
    protected $fillable = ['resim_yolu', 'thumb_yolu', 'thumb_yolu_2', 'yazi_id', 'resim_alt', 'resim_desc'];

    public function yazi(){
        return $this->hasOne('App\Blog');
    }
}

Blog modeli de şu şekilde:

class Blog extends Model
{
    protected $table = 'blog_yazilar';
    protected $fillable = ['baslik', 'icerik', 'slug', 'resim', 'yazar', 'kategori_id', 'etiketler'];

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

    public function resim(){
        return $this->hasOne('App\BlogResim', 'yazi_id');
    }
}

BlogController şu şekilde:

class BlogController extends Controller
{
    public function blog_anasayfa(){
    	$yazilar = Blog::with('resim')->orderBy('id', 'desc')->get(); // Burada first() fonksiyonunu da denedim işe yaramadı
    	return view('blog.blog')->with(compact('yazilar',$yazilar));
    }

    public function blog_icerik(){
    	return view('blog.icerik');
    }
}

View içinde

@foreach($yazilar as $yazi)
 {{ $yazi->resim->resim_yolu }}
@endforeach

Şeklinde yolu çekmeye çalışıyorum ama başlıktaki hatayı alıyorum sürekli. Aynı foreach içinde {{ $yazi->kategori->kategori_adi }} koduyla başka tablodaki kategori adını çekebiliyorum ama resim tablosundaki alanı çekemiyorum. Yanlış veya eksik olan nedir burada?

Son düzenleyen root (21.05.2018 19:24:38)

Çevrimdışı

Forum alt kısmı