Laravel 4 带有max()的查询生成器
我正在尝试将此sql重写为laravel 4Laravel 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
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()
不需要将函数用作第三个参数,只需使用此函数的结果