[英]Change mysql query to laravel eloquent query builder
我有一個需要更改為 laravel eloquent 查詢的 Mysql 查詢。 我是初學者。 需要一些幫助來轉換這個或一個很好的參考。 我閱讀了 laravel 提供的文檔,但這還不夠。 我想要實現的是獲取每個 id_nama_ruang 的最新數據
所以mysql查詢:
select * from tb_ruang_tt t
inner join (
select id_nama_ruang, max(tgl_pengubahan) as MaxDate
from tb_ruang_tt
group by id_nama_ruang
) tm on t.id_nama_ruang = tm.id_nama_ruang and t.tgl_pengubahan = tm.MaxDate
我嘗試在 Laravel 上使用它:
$data = DB::select('select * from tb_ruang_tt t
inner join (
select id_nama_ruang, max(tgl_pengubahan) as MaxDate
from tb_ruang_tt
group by id_nama_ruang) tm on t.id_nama_ruang = tm.id_nama_ruang and t.tgl_pengubahan = tm.MaxDate');
它有效,但我的問題是我無法在模型上調用我的關系函數。 所以我需要這樣的東西:
$data = ruang_tt::select();
而不是使用$data = DB::select()
;
請幫助,任何幫助和指針表示贊賞。
所以經過多次嘗試,我使用這樣的子查詢:
$latestRuang = ruang_tt::select('id_nama_ruang', \DB::raw('MAX(tgl_pengubahan) as MaxDate'))->groupBy('id_nama_ruang');
$data = ruang_tt::from('tb_ruang_tt as t')->joinSub($latestRuang, 'latest_ruang', function ($join) {
$join->on('latest_ruang.id_nama_ruang', '=', 't.id_nama_ruang')->on('latest_ruang.MaxDate', '=', 't.tgl_pengubahan');
})->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.