簡體   English   中英

將 mysql 查詢更改為 laravel eloquent 查詢生成器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM