繁体   English   中英

如何从联接表SQL获取ID

[英]how to get id from joined table sql

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

这是我的凯拉斯桌 这是我的凯拉斯桌

这是我的西斯瓦桌子 这是我的西斯瓦桌子

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

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

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

您的问题来自名称冲突。 当您连接两个表时,有2个fields 若要解决它,您应该使用SQL别名。 您可以看到有关此主题的示例

您也可以考虑使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM