Упрощенный вид: Модель и свойства
Route
id
City
id
name
RouteCityPivot
id
city_id
route_id
Один Route имеет только 2 City (отношение many to many через pivot-таблицу).
Имея названия двух городов - например Berlin и Munich - как можно найти содержащий эти два города Route?
$route = Route::whereHas('cities', function ($q) use ($from, $to){
q->whereIn('name', [$from, $to]);
})->get();
Этот код найдет все Route, которые содержат хотя бы один из городов, а необходимо найти именно тот, где есть эта пара.