Laravel 5.2左边连接一个到多个行,其中包含最高值

时间:2016-06-02 18:32:54

标签: php mysql laravel greatest-n-per-group

我正试图在一对多的关系中使用雄辩的左联盟。我只想在sort_order列中获得具有最高值的行。

到目前为止,我的查询看起来像这样:

Package::select('packages.*')
        ->leftJoin('package_routes', 'package_routes.package_id', '=', 'packages.id')
        ->leftJoin('package_route_items', function($join){
            $join->on('package_route_items.package_route_id', '=', 'package_routes.id')
                ->where(???);
        })->...//do more stuff to query here

我坚持使用where子句,如果我甚至应该使用where where。

1 个答案:

答案 0 :(得分:0)

由于我不知道所有查询条件我将尝试简化(您可能需要调整列名和语法

在控制器/模型的开头添加use DB;

$data = DB::table('packages')
->select('packages.*, package_route_items.company_id, package_routes.company_id')
    ->join('package_routes', 'package_routes.package_id', '=', 'packages.id')
    ->join('package_route_items.package_route_id', '=', 'package_routes.id')
    ->orderBy('packages.value_column', 'DESC')->first();

这是我从你的描述到目前为止所理解的。它没有经过测试,但我认为它应该适用于可能很小的编辑。

与您类似的问题是herehere(希望它对您的帮助远远超过我的回答)。