我有3张这样的表,
kelas
id | kelas | romawi
jurusan
id |别名|座右铭| visi | misi | tahun
kelas_jurusan (中间表)
id | id_kelas(来自表kelas)| id_jurusan(来自表jurusan)
更新
siswa
nama_lengkap | nisn | id_kelas_jurusan(来自表kelas_jurusan)
我希望通过访问Siswa模型中的kelas_jurusan表来获取表kelas中的数据'kelas'。
我有这样的代码: Siswa模型
public function kelas()
{
return $this->belongsToMany('App\Kelas', 'kelas_jurusan', 'id_kelas');
}
答案 0 :(得分:1)
这看起来像Many To Many关系。您可以将模型定义为
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');
}
}
要从两个模型中获取数据,您可以使用eager loading
Kelas::with('jurusans')
<小时/> <小时/>
根据您更新的结构,您需要引入一个新的联结模型,如KelasHasJurusan
,其中将包含以下映射
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');
}
}
其他模型将被映射为
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');
}
}
现在加载kelas的数据以及siswa数据,你可以得到
Kelas::with('kelasHasJurusan.siswas')