Два пути: используйте красноречивые методы, которые предпочтительнее, или объедините один запрос, чтобы получить желаемые результаты
Двигаясь вперед красноречивым образом, я предполагаю, что вы определили свои модели и их отображения на основе их типа отношений (1: m, m: m)
$trips= Trips::with('city')
->withCount('ratings')
->where('price', '>=', 100)
->get();
Движение вперед с присоединением
$trips = DB::table('trips as t')
->select('t.id', 't.price','c.name',DB::raw('count(*) as rating_count'))
->join('cities as c' ,'t.city_id', '=' , 'c.id')
->join('ratings as r' ,'t.ratable_id', '=' , 'r.id')
->where('t.price', '>=', 100)
->groupBy('t.id', 't.price','c.name')
->get();