Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Laravel Hakkında


khazadum

Öne çıkan mesajlar

Selam,

Tim 'in ısrarla önerisiyle laravel'e geçiş yapmış bulunuyorum :D 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.

AppUser kısmında;


public function role() {
return $this->belongsTo('AppRole');
}
public function department() {
return $this->belongsTo('AppDepartment');
}
public function company() {
return $this->belongsTo('AppCompany');
}


ş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.
Link to comment
Sosyal ağlarda paylaş

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)
Link to comment
Sosyal ağlarda paylaş

Cevap için teşekkürler,

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


php artisan tinker
$user = AppUser::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.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...