$items = Trip::when($request->get('day_date'), function($query, $date){ $query->where('date', $date); })
->when($request->get('city_departure'), function($query, $departure_id){ $query->where('departure_id', $departure_id); })
->when($request->get('city_arrival'), function($query, $landing_id){ $query->where('landing_id', $landing_id); })
->get();
return view('search')->with(['mass' => $items]);
1. ну решение в лоб простое - у вас должна быть таблица задач, где лежат поставленные задачи пользователями с фильтрами, и при обработке этой задачи эпизодически опрашивать изменилась ли запись с задачей. правда решать такое через крон, такое себе - может лучше очереди?
2. ну можно полезть в какой нибудь swoole, roadrunner или еще чего и мутить там - но мне кажется вы не сможете.