我有 3 个这样的表,
凯拉斯
id | kelas | romawi
巨人
id | alias | motto | visi | misi | tahun
kelas_jurusan(中间表)
id | id_kelas (from table kelas) | id_jurusan (from table jurusan)
更新:
西西瓦
nama_lengkap | nisn | id_kelas_jurusan (from table kelas_jurusan)
我想通过访问 Siswa 模型中的 kelas_jurusan 表来获取表 kelas 中的数据“kelas”。
我有这样的代码: 西西瓦模型
public function kelas()
{
return $this->belongsToMany('App\Kelas', 'kelas_jurusan', 'id_kelas');
}
最佳答案
这看起来像一个 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');
}
}
其他模型会像这样映射
凯拉斯
class Kelas extends Model
{
public function kelasHasJurusan()
{
return $this->hasMany(KelasHasJurusan::class, 'id_kelas');
}
}
朱鲁桑
class Jurusan extends Model
{
public function kelasHasJurusan()
{
return $this->hasMany(KelasHasJurusan::class, 'id_jurusan');
}
}
西西瓦
class Siswa extends Model
{
public function kelasHasJurusan()
{
return $this->belongsTo(KelasHasJurusan::class, 'id_kelas_jurusan');
}
}
现在加载 kelas 数据和 siswa 数据,您可以获得
Kelas::with('kelasHasJurusan.siswas')
关于php - 如何从laravel中的中间表中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50561057/