php - 如何从laravel中的中间表中获取数据?

标签 php mysql laravel-5

我有 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/

相关文章:

php - 如何使用 PHP 从表单数据创建新文件

PHP/MySQL 特定的列数

php - 在服务器端准备查询 "last"需要多长时间?

MySQL错误: 1395 Can not delete from join view

java - Hibernate 单向与 MySQL DB 的一对一映射?

mysql - 如何从堆栈中的2个表中提取数据

javascript - 使用脚本定期执行mysql查询

Mysql查询修改

php - 如何使登录的用户对象可用于 Laravel 5.3 中的所有 View

php - 内部加入 laravel 5.2