Вы можете передать свой запрос методу построения запросов ->with()
:
$data = City::with(['hotel' => function($query) use ($user_input) {
$query->where('name', 'LIKE', '%' . $user_input . '%')->limit(5);
}])
->where('name', 'LIKE', '%' . $user_input . '%')
->get();
Это позволит получить все отели, связанные с городом, в которые введен пользователь, где город содержит данные, введенные пользователем.
Обратите внимание, что ->orWhere()
здесь не используется.