$products = ModelProvidersProducts::select(DB::raw('products.title,products.id,specifications_values.position,specifications.position as spec_pos'))
->leftJoin('products', 'products.id', '=', 'providers_products.product_id')
->leftJoin('nomenclature', 'nomenclature.id', '=', 'products.category')
->leftJoin('products_specifications', 'products_specifications.p_id', '=', 'product_id')
->leftJoin('specifications', 'specifications.id', '=', 'products_specifications.s_id')->orderBy('spec_pos')
->leftJoin('specifications_values', 'specifications_values.id', '=', 'products_specifications.v_id')->orderBy('position')
->orderBy('category')
->get();
//$q->relatedProduct->relatedSpecsGroup - это массив характеристик. У каждого из которых, есть поле position и еще одна связь relatedValue.