如何从联接表SQL获取ID

时间:2019-07-09 16:07:48

标签: mysql laravel-5 phpmyadmin

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

这是我的凯拉斯桌 this is my kelas table

这是我的siswa表 this is my siswa table

我使用来自laravel的查询构建器来运行查询,这就是我的查询

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

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

1 个答案:

答案 0 :(得分:0)

您的问题来自名称冲突。当您连接两个表时,有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;