Laravel 5.2 слева соединяет строку один ко многим со столбцом наибольшего значения

Я пытаюсь сделать левое соединение, используя eloquent в отношениях один ко многим. Я хотел бы только получить строку с самым высоким значением в столбце 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.

2

Решение

Поскольку я не знаю всех запросов, где условия, я постараюсь упростить (вероятно, вам придется настроить имена столбцов и синтаксис

добавлять 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();

Это то, что я понял так далеко от вашего описания. Это не проверено, но я думаю, что это должно работать с незначительным редактированием.

Подобный вопрос, как ваш Вот, а также Вот (надеюсь, это поможет вам даже больше, чем мой ответ).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]