Я пытаюсь сделать левое соединение, используя 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.
Поскольку я не знаю всех запросов, где условия, я постараюсь упростить (вероятно, вам придется настроить имена столбцов и синтаксис
добавлять 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();
Это то, что я понял так далеко от вашего описания. Это не проверено, но я думаю, что это должно работать с незначительным редактированием.
Подобный вопрос, как ваш Вот, а также Вот (надеюсь, это поможет вам даже больше, чем мой ответ).
Других решений пока нет …