programmer1453
Açıkçası çok karışık bir sorgunuz var.
Şurayı tamamen elequentORM with('') ile çekebiliriniz
->join('roles','roles.id','=','users.role')
->join('working_user as calisan','calisan.user_id','=','users.id')
->join('departments','departments.id','=','calisan.departman_id')
->join('cities','calisan.il_id','=','cities.id')
->join('city_districts','calisan.ilce_id','=','city_districts.id')
->join('working_user_features','users.id','=','working_user_features.calisan_id')`
Eğer elequent kullanırsanız şunada gerek yok sanırım zaten bir anlam ifade etmiyor
->select('departments.adi as departman','roles.id as rol_id','cities.name as il','city_districts.ilce as ilce','users.name as adi','users.logo_url as logo','users.id as kullanici_id','calisan.yas as yas','calisan.maas as maas','calisan.ozgecmis','working_user_features.feature_id')
Her kullanıcıya ait Şehir, maaş, departmanı with() ile çekebiliriniz.
Bunun için User modelinde sorgularınızı tanımlayın:
Örneğin :
public function user_role()
{
return $this->hasOne('App\Models\Role', 'id', 'user_role');
}
Sorgunuz şu şekilde olmalı.
Not: Sorgu örnektir
$working_user =User::with('user_role','working_user','user_departments','user_cities','working_user_features')
->distinct('users.id')
->whereIn('roles.id',[2,4,5])
->where('departments.id','=',$request->departman)
->when(($request->uyruk)!=0, function($query) use ($request){
$query->where('calisan.uyruk', '=', $request->uyruk);
})->paginate(15)->appends(request()->except('page'));