繁体   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