Laravel 4 带有max()的查询生成器

Laravel 4 带有max()的查询生成器,laravel-4,Laravel 4,我正在尝试将此sql重写为laravel 4 SELECT * FROM SolutionFile WHERE SolutionFile.group_id = $group_id and version = ( SELECT max(s1.version) FROM SolutionFile s1 WHERE s1.group_id

我正在尝试将此sql重写为laravel 4

SELECT
    *
FROM
    SolutionFile
WHERE
    SolutionFile.group_id = $group_id and
    version = (
         SELECT
             max(s1.version)
         FROM
             SolutionFile s1
         WHERE
             s1.group_id = $group_id
    )
我写了这个请求

SolutionFile::where('group_id', '=', $group_id)
    ->whereRaw('version = (select max(`version`) from files where group_id = ' . $group_id . ')')->get();
SolutionFile::where('group_id', '=', $group_id)
    ->where(function($query) use($group_id) {
            return $query->where('version', '=', function() use($group_id) {
                return SolutionFile::where('group_id', '=', $group_id)->max('version');
            });
        });
它工作得很好,但我想用拉威尔的方式重写它,而不需要任何原始的东西。 我试过这个请求

SolutionFile::where('group_id', '=', $group_id)
    ->whereRaw('version = (select max(`version`) from files where group_id = ' . $group_id . ')')->get();
SolutionFile::where('group_id', '=', $group_id)
    ->where(function($query) use($group_id) {
            return $query->where('version', '=', function() use($group_id) {
                return SolutionFile::where('group_id', '=', $group_id)->max('version');
            });
        });
但它返回一个空集


有没有办法重写它?我在上次请求中哪里出错了?

我找到了解决这个问题的简单方法

SolutionFile::where('group_id', '=', $group_id)
                        ->where(function($query) use($group_id) {
                            return $query->where('version', '=', SolutionFile::where('group_id', '=', $group_id)->max('version'));
                        })->get()
不需要将函数用作第三个参数,只需使用此函数的结果