Jump to content
khazadum

Laravel Hakkında

Öne çıkan mesajlar

§ 08 Dec 2017, 20:15
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.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 08 Dec 2017, 22:24
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)

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 08 Dec 2017, 22:40
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.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 08 Ara 2017, 23:21
Kac sene once soyledim kimbilir.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Kayıt olun ve aramıza katılın!

Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap

Hemen giriş yap



×
×
  • Yeni Oluştur...