Postingan lainnya
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
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.
Nah itu dia mas, masalahnya kan siswa itu banyak jadi engga bisa di find satu per satu