我有一个来自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();
答案 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;