Merhaba arkadaşlar uzun süredir Eloquent ile ilgili olarak bir sorun ile uğraşmaktayım. Derdime derman olan bir çözüme ne yazık ki ulaşamadım.
Elimde Lise, Sınıf, Öğrenci ve Üniversite adında 4 adet modelim var.
Lise Modeli
class Lise extends Model
{
public function siniflar()
{
return $this->hasMany('\App\Models\Sinif');
}
}
Sınıf Modeli
class Sinif extends Model
{
public function Lise()
{
return $this->belongsTo('\App\Models\Lise');
}
public function ogrenciler()
{
return $this->hasMany('\App\Models\Ogrenci');
}
}
Öğrenci Modeli
class Ogrenci extends Model
{
public function Sinif()
{
return $this->belongsTo('\App\Models\Sinif');
}
public function tercihUniversite()
{
return $this->belongsToMany('\App\Models\Universite')->withPivot('tercihNo')->withTimestamps();
}
}
Üniversite Modeli
class Universite extends Model
{
public function basvuranOgrenciler()
{
return $this->belongsToMany('\App\Models\Ogrenci')->with('sinif.okul')->withPivot('tercihNo')->withTimestamps();
}
}
Şimdi arkadaşlar benim yapmak istediğim id'si gönderilen üniversiteye tercih yapmış öğrencilerin listesini almak. Aşağıdaki şekilde işlem yapmak istediğimde Controller'da sorunsuz çalışıyor.
$universite = Universite::find($id);
$data = $universite ->basvuranOgrenciler;
return $data->toJson;
Benim takılı kaldığım sorun şu: Yukarıdaki kodu çalıştırdığımda bana gelen data şu şekilde oluyor. ogrenci_universite pivot tablosundan kayıtları alıp bana Öğrenci->Sınıf->Okul şeklinde döndürüyor. Benim istediğim cevap ise Okul->Sınıf->Öğrenci şeklinde. Yani A üniversitesine tercih yapmış öğrencilerin Okullarını gruplamak ve okul verilerinin altında öğrencilerin sınıflarını gruplamak, sınıfların altında ise öğrencilerin bağlı olduğu lise altında öğrencilerin verileni almak istiyorum.
Yukarıdaki işlemi nasıl yapabilirim?