[ Paticik.com | Forum | Kullanici Sozlesmesi | Üye Ol ]
» Forum Gezgini ... Üye Ol / Giris Yap
FORUM.PATICIK.COM
[ FORUM ANASAYFA ]  

[ Yeni Konu ] [ Mesaj Yaz ]
bagli degilsiniz: | Giris Yap | Üye Ol |
|+ Paticik.com Forumları
|-- |+ Pati Tech / Programlama
|-- |-- |+ Laravel Hakkında...
Yazar RSS Konu: Laravel Hakkında {280}
  [ A ]
Üye
ID § 08 Dec 2017, 23:15    [ Alintila ] [ Özel Mesaj ] [ Albüm ]
Selam,

Tim 'in ısrarla önerisiyle laravel'e geçiş yapmış bulunuyorum grinning smiley Takıldığım noktaları bu konuyu ısıtıp ısıtıp sizlere sorarım artık.

Şimdi ilk soruma gelince. Bu Relationships olayını çok anlamadım. Şimdi dört adet tablom var ve aralarında ilişki kurmam gerekiyor. Tablolar; users, companies, departments, roles. Her bir tablo da user_id oluşturdum. users tablosunda da company_id, department_id, role_id alanlarım mevcut.

App\User kısmında;

public function role() {
   return $this->belongsTo('App\Role');
}
public function department() {
   return $this->belongsTo('App\Department');
}
public function company() {
   return $this->belongsTo('App\Company');
}

şeklinde belongsTo ile birbirlerine bağlamaya çalıştım. Controller da ise;

$roles = Role::all();
$company = Company::all();
$department = Department::all();


şeklinde ilgili tabloların verilerini almaya çalışıyorum ve view'e göndermeye çalışıyorum;

return view('admin.users.index', compact('users', 'roles', 'company', 'department'));

Şimdi problem department kısmında. View'deki tabloya department 'i eklediğimde Trying to get property of non-object hatası alıyorum.

{{$user->role->name}}
{{$user->company->name}}
{{$user->department->name}}

department'i sildiğimde roles, company değerleri geliyor. Bu Relationships leri Bilal'e anlatır gibi anlatabilir misiniz bana?

Şimdiden çok teşekkür ederim.

AHAHAHAHAHAHAHA ok.
Üye
ID § 09 Dec 2017, 01:24    [ Alintila ] [ Özel Mesaj ] [ Albüm ]
Relation'ları gayet düzgün kurmuşsun, herhangi bir problem göremedim ben.

Dediklerinden anladığım kadarıyla "Trying to get property of non-object" hatası aşağıdaki satırdan kaynaklanıyor.
{{$user->department->name}}

Bu hata da özetle "Senin object olarak varsaydığın ve '->' notasyonuyla property'sine ulaşmaya çalıştığın şey object degil!" diyor.

O zaman ya $user ya da onun department'i NULL dönüyor. (Php'de NULL != Object)

{{$user->role->name}}
{{$user->company->name}}
Bu yukarıdaki iki satır problemsiz çalışıyorsa, $user NULL değil demek ki.

O zaman $user->department'in değeri NULL.
Yani users tablosundaki ekrana yazdırmaya çalıştığın row'un department_id'si ya NULL ya da id'si departments tablosunda kaydı bulunmayan bir id (dolayısıyla yine NULL dönüyor.)

Eğer ki birden fazla user için bir for döngüsünde bunları ekrana yazdırmaya çalışıyorsan ve bazı user'ların department'ları NULL olabiliyorsa;

{{$user->department->name ?? 'Kullanıcının bir departmanı yok'}}

şeklinde yazdırmayı deneyebilirsin. (?? = Null coalescing operator)
Üye
ID § 09 Dec 2017, 01:40    [ Alintila ] [ Özel Mesaj ] [ Albüm ]
Cevap için teşekkürler,

Sorunu çözdüm. Aslında command prompt 'ta tinker ile departmana ulaşabiliyorum;

php artisan tinker
$user = App\User::find(1)
$user->role
$user->company
$user->department

şu üç çıktıdan da veri alabiliyorum. Verileri {{ $user->role->name }} şeklinde değil de array olarak çektiğimde verileri yazdırabiliyorum.

tam olarak şu şekilde çalıştırdım;

<td>{{ $user->name }}</td>
<td>{{ $user->role['name'] }}</td>
<td>{{ $user->company['name'] }}</td>
<td>{{ $user->department['name'] }}</td>

ama ilk yaptığım haliyle neden çalışmadı bilemedim çözemedim.

AHAHAHAHAHAHAHA ok.
Genel Yönetici
medal 1k
ID § 09 Dec 2017, 02:21    [ Alintila ] [ Özel Mesaj ] [ Albüm ]
Kac sene once soyledim kimbilir.
  [ Y ]
[ Forum ] / [ Konu ]
=o=
[ Yeni Konu ] [ Mesaj Yaz ]
*Bu sayfadaki içerik, yazanların kiŞisel görüŞlerini belirtmektedir. KiŞiler, üye anlaŞmasında var olan Şartların bilincinde olmak yükümlülüğündedir. Üye anlaŞmasına göre, gönderilen her türlü içerik, içeriği göndermiŞ olarak görünen üye rumuz ismi ve üyenin kendisine aittir. Paticik.com ve yetkilileri, üyelerimizin göndermiŞ olduğu iŞ bu sayfada yazılı olarak bulunan içerik hakkında hiçbir yasal sorumluluk kabul etmemektedir. Yükümlülük altında olmasa dahi, var olan site içeriğinin bütünü veya bir kısmının site kurallarına uygunsuzluğu durumunda, iletiŞim sayfamızdan bize eriŞebilir, gereken düzenlemeleri yapmamızı sağlayabilirsiniz.
[ Paticik.com | Forum | Kullanici Sozlesmesi | Üye Ol ]
Iletisim : info [at] paticik.com
Secereli Dobermann | Londra Rehberi Copyright 2001-2015 @ Paticik.com
This forum is powered by Phorum