我正在尝试将此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();
效果很好,但是我想用" laravel方式重写它"没有whereRaw。 我试过这个请求
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');
});
});
但它返回一个空集。
有没有办法重写它?我在上一次请求中哪里犯了错误?
答案 0 :(得分:0)
我找到了这个简单的解决方案
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()
没有必要使用function()
作为第三个参数,只是来自此函数的结果。