#mysql #sql #laravel
Вопрос:
Я хочу создать конструктор запросов с помощью этого запроса, но он не будет работать.
SELECT
karyawan.id,
karyawan.nama_lengkap,
departemen.nama,
jabatan.nama,
(
SELECT
tingkat
FROM
riwayat_pendidikan
WHERE
karyawan_id = karyawan.id
ORDER BY
tahun_selesai DESC
LIMIT
1
) AS pendidikan_terakhir
FROM
karyawan
INNER JOIN jabatan ON karyawan.jabatan_id = jabatan.id
INNER JOIN departemen ON jabatan.departemen_id = departemen.id;
Хорошо это сделано с помощью этого конструктора запросов , спасибо, ребята, я использую это https://sql-to-laravel-builder.herokuapp.com/
DB::table('karyawan')
->select('karyawan.id as id','karyawan.nama_lengkap as nama','departemen.nama as departemen'
,'jabatan.nama as jabatan','karyawan.jenis_kelamin','karyawan.nomor_hp_whatsapp','karyawan.status_pegawai',
'karyawan.tanggal_mulai_bekerja','karyawan.tanggal_keluar_bekerja','karyawan.tanggal_akhir_kontrak',
'karyawan.telepon_rumah','karyawan.telepon_kantor',
DB::raw('(SELECT CONCAT(riwayat_pendidikan.tingkat," ", riwayat_pendidikan.jurusan)
AS FIRSTNAME FROM riwayat_pendidikan WHERE karyawan_id = karyawan.id ORDER BY
tahun_selesai DESC LIMIT 1 ) AS pendidikan_terakhir'))
->join('jabatan','karyawan.jabatan_id','=','jabatan.id')
->join('departemen','jabatan.departemen_id','=','departemen.id')
->where('departemen.nama','=','Staff')
->get();
Ответ №1:
use IlluminateSupportFacadesDB;
DB::table('karyawan')
->join('jabatan', 'jabatan.id', '=', 'karyawan.jabatan_id')
->join('departemen', 'departemen.id', '=', 'jabatan.departemen_id')
->select([
'karyawan.id',
'karyawan.nama_lengkap',
'departemen.nama',
'jabatan.nama',
])
->addSelect([
'pendidikan_terakhir' => DB::table('riwayat_pendidikan')
->select('tingkat')
->whereColumn('riwayat_pendidikan.karyawan_id', 'karyawan.id')
->orderByDesc('tahun_selesai')
->limit(1)
])->get();