Похоже, ваши проблемы будут решаться каждым разработчиком Laravel за один день.Вы забыли вернуть запрос исходному конструктору.
У вас есть:
$streets->where('name', 'like', '%'. request('street') .'%');
, когда вы должны иметь:
$streets = $streets->where('name', 'like', '%'. request('street') .'%');
Вы объединяете методы в цепочку, поэтому вы должны получить исходный конструктор запросов
РЕДАКТИРОВАТЬ На основе комментариев: Кроме того, что вы не ответили на запрос, как я уже говорил выше, вы используете whereHas
, как @thisiskelvin указал в его ответе.
Вы должны использовать
if (request()->has('street')) {
$streets = $streets->where('name', 'like', '%'. request('street') .'%');
}
if (request()->has('house')) {
$streets = $streets->with(['properties' => function ($query) {
$query->where('house_number', request('house'));
}]);
}
return $streets->get();