![](/img/trans.png)
[英]How to get row only if column value equals “joined_table1.id” or “joined_table2.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.