Reputation: 31
I have 3 table like this,
kelas
id | kelas | romawi
jurusan
id | alias | motto | visi | misi | tahun
kelas_jurusan (intermediate table)
id | id_kelas (from table kelas) | id_jurusan (from table jurusan)
Update:
siswa
nama_lengkap | nisn | id_kelas_jurusan (from table kelas_jurusan)
I want to get data 'kelas' in table kelas with accessing the kelas_jurusan table in Siswa model.
I have code like this: Siswa Model
public function kelas()
{
return $this->belongsToMany('App\Kelas', 'kelas_jurusan', 'id_kelas');
}
Upvotes: 1
Views: 233
Reputation: 64476
This looks like a Many To Many relationship. You can define your models as
class Kelas extends Model
{
public function jurusans()
{
return $this->belongsToMany(Jurusan::class, 'kelas_jurusan', 'id_kelas');
}
}
class Jurusan extends Model
{
public function kelases()
{
return $this->belongsToMany(Kelas::class, 'kelas_jurusan', 'id_jurusan');
}
}
To get data from both models you can use eager loading
Kelas::with('jurusans')
As per your updated structure you need to introduce a new junction model like KelasHasJurusan
which will have following mappings in it
KelasHasJurusan
class KelasHasJurusan extends Model
{
public function kelas()
{
return $this->belongsTo(Kelas::class, 'id_kelas');
}
public function jurusan()
{
return $this->belongsTo(Jurusan::class, 'id_jurusan');
}
public function siswas(){
return $this->hasMany(Siswa::class, 'id_kelas_jurusan');
}
}
Other models will be mapped like
Kelas
class Kelas extends Model
{
public function kelasHasJurusan()
{
return $this->hasMany(KelasHasJurusan::class, 'id_kelas');
}
}
Jurusan
class Jurusan extends Model
{
public function kelasHasJurusan()
{
return $this->hasMany(KelasHasJurusan::class, 'id_jurusan');
}
}
Siswa
class Siswa extends Model
{
public function kelasHasJurusan()
{
return $this->belongsTo(KelasHasJurusan::class, 'id_kelas_jurusan');
}
}
Now to load data for kelas alongwith siswa data you can get as
Kelas::with('kelasHasJurusan.siswas')
Upvotes: 1