Mesela @foreach($company as $companies) dilsel bir hata var. Mantıklı olanı @foreach($companies as $company) çünkü firmalar içerisinde döngüye girip tekil firmaya ulaşıyorsunuz.
Şu kısma bakalım:
<img class="img-circle img-avatar" src="{{ empty($companies->company_logo) ? asset('public/default-image.png') : url($companies->company_logo) }}"/>
Bu kısım yerine bir tane
accessor tanımlanabilir:
// app/Company.php
public function getAvatarAttribute()
{
if($this->company_logo) {
return asset($this->company_logo);
}
return asset('public/default-image.png')
}
Böylece:
<img class="img-circle img-avatar" src="{{ $company->avatar }}">
$company->active ve
$company->company_vip_id için ise $casts tanımlanabilir:
// app/Company.php
protected $casts = [
'active' => 'boolean',
'company_vip_id' => 'boolean'
];
Böylece 0 1 değil de true false şeklinde işlem yapılabilir. PHP'de çok sorun olmuyor ama sorun çıkarabileceği nadir yerler vardır, onları da engellemiş olursunuz.
one-to-many ilişkisini tanımladığınız yerde 'App\Province' yazmak yerine
::class statik özelliğini kullanmak hata yapma olasılığınızı azaltır. Ayrıca primary key id ise hasOne içerisinde iki key tanımlamanıza gerek yok:
public function province()
{
return $this->hasOne(Province::class, 'company_province_id');
}
Şu kısım:
$company = Company::with('user','province','district','companyLikes')->orderBy('id','ASC')->get();
Burada Company modeline her ulaştığınızda örneğin user, province ve district ilişkilerini her zaman yüklüyorsanız onları $with özelliği ile otomatik yüklenmesini sağlayabilirsiniz:
// app/Company.php
protected $with= [
'user', 'province', 'district'
];
Daha sonra ise sadece o an işiniz olan ilişkileri yüklemeniz yeterli olur. Burada user, province ve district ilişkileri otomatik yüklü geliyor:
$company = Company::with('companyLikes')->orderBy('id','ASC')->get();