The accepted answer is ok for small sets of data, but for large sets you might want to use a subquery to order the results:
Flight::orderBy(
Term::select('price')
->whereColumn('terms.flight_id', 'flights.id')
->orderBy('price', 'desc')
->take(1),
'desc')->get();