【问题标题】:how to get id from joined table sql如何从连接表sql中获取id
【发布时间】:2019-11-19 06:01:42
【问题描述】:

我有一张来自 siswa 和 kelas 的联表。在 kelas 表中有一列 idSiswa,它来自 siswa 表中的 id。问题是如何在 kelas 加入时从 kelas 获取 id。当我尝试获取 id 时,它显示的是 siswa 表中的 id,而不是 kelas 表中的 id,我也已经使用了右连接和左连接,但仍然没有得到答案

这是我的 kelas 表

这是我的 siswa 桌子

我使用 laravel 的查询生成器来运行查询,这是我的查询

$siswa = DB::table('siswas')
            ->join('kelas', 'kelas.idSiswa', '=', 'siswas.id')
            ->where([
                ['kelas.kelas', '2'],
                ['kelas.semester', 'ganjil'],

            ])
            ->select('kelas.*', 'siswas.*')
            ->get();

【问题讨论】:

    标签: mysql laravel-5 phpmyadmin


    【解决方案1】:

    您的问题来自名称冲突。当您加入两个表时,有 2 个fields。要解决它,您应该使用 SQL 别名。 你可以在this topic看到一个例子

    您也可以考虑使用 Eloquent,它提供 OOP 优势并自动避免此类问题。

    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Kelas extends Model
    {
        public function siswa()
        {
            return $this->belongsTo('App\Siswa', 'idSiswa', 'kelas');
        }
    }
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Siswa extends Model
    {
        public function kelas()
        {
            return $this->hasMany('App\Kelas', 'idSiswa', 'kelas');
        }
    }
    
    $siswa = App\Siswa::with('kelas')
        ->where([
            ['kelas', '2'],
            ['semester', 'ganjil'],
        ])
        ->get();
    
    $firstSiswaKelasIds = $siswa->first()->kelas->map->id;
    

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多