Relasi pada laravel dengan tabel penengah

Bismillah, jadi saya punya 4 tabel: 1.siswa => id | nisn | id_kelas_jurusan (fk dari tabel kelas_jurusan) | nama 2.kelas => id | kelas | romawi 3.jurusan => id | jurusan | motto | logo 4.kelas_jurusan (tabel penengah) => id | id_kelas (fk tbl kelas) | id_jurusan (fk tbl jurusan).

Nah yang menjadi pertanyaan yaitu : 1.bagaimana cara mendapatkan data kelas dari siswa? contoh : ketika saya ketik {{ $siswa->kelas }} di view siswa.index maka hasilnya kelas dari siswa tersebut.

dari setiap 4 tabel tersebut saya sudah buat modelnya : 1.model Siswa public function kelasJurusan() { return $this->belongsTo('App\KelasJurusan', 'id_kelas_jurusan'); }

2.model Kelas public function kelasJurusan() { return $this->hasMany('App\KelasJurusan', 'id_kelas'); }

3.model Jurusan public function kelasJurusan() { return $this->hasMany('App\KelasJurusan'); }

4.model KelasJurusan public function kelas() { return $this->belongsTo('App\Kelas', 'id_kelas'); }

public function jurusan() { return $this->belongsTo('App\Jurusan', 'id_jurusan'); }

public function siswa() { return $this->hasMany('App\Siswa', 'id_kelas_jurusan'); }

Saya sudah coba juga dengan menggunakan eager loading : Kelas::with('KelasJurusan.siswa')->get(), tapi hasilnya malah mengambil semua data yg ada di tabel kelas, tidak spesifik berdasarkan siswa.Terims

avatar azzario
@azzario

27 Kontribusi 2 Poin

Diperbarui 5 tahun yang lalu

3 Jawaban:

Untuk fungsi get dia bakal return Collection mas, artinya semua data nya akan diambil. Untuk ambil data spesifik berdasarkan siswa di kelasnya bisa ditambahin kondisi dengan method where(). Atau juga bisa dengan find() atau findOrFail() dengan parameter id siswanya.

avatar Yurichandra
@Yurichandra

41 Kontribusi 9 Poin

Dipost 5 tahun yang lalu

Nah itu dia mas, masalahnya kan siswa itu banyak jadi engga bisa di find satu per satu

avatar azzario
@azzario

27 Kontribusi 2 Poin

Dipost 5 tahun yang lalu

Udah bisa gan, terims :)

avatar azzario
@azzario

27 Kontribusi 2 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban